如何使用大小为m的滑动窗口将numpy数组划分为n个子数组?

Fourat Thamri

我有一个很大的NumPy数组,我想通过移动特定大小的窗口将其分成许多子数组,这是我的代码,大小为11的子数组:

import numpy as np

x = np.arange(10000)
T = np.array([])

for i in range(len(x)-11):
    s = x[i:i+11]
    T = np.concatenate((T, s), axis=0)

但是对于拥有超过一百万个条目的阵列来说,这是非常缓慢的,是否有任何技巧可以使其更快?

易碎

我认为您当前的方法无法产生您所描述的内容。这是一种更快的方法,该方法使用列表推导将长数组拆分为许多子数组:

代码修复:

import numpy as np 

x = np.arange(10000)
T = np.array([])

T = np.array([np.array(x[i:i+11]) for i in range(len(x)-11)])

速度比较:

sample_1 = '''
import numpy as np 

x = np.arange(10000)
T = np.array([])

for i in range(len(x)-11):
    s = x[i:i+11]
    T = np.concatenate((T, s),axis=0)

'''    

sample_2 = '''
import numpy as np 

x = np.arange(10000)
T = np.array([])

T = np.array([np.array(x[i:i+11]) for i in range(len(x)-11)])
'''

# Testing the times
import timeit
print(timeit.timeit(sample_1, number=1))
print(timeit.timeit(sample_2, number=1))

速度比较输出:

5.839815437000652   # Your method
0.11047088200211874 # List Comprehension

我只检查了1次迭代,因为差异非常明显,而且许多迭代都不会改变总体结果。

输出比较:

# Your method:
[  0.00000000e+00   1.00000000e+00   2.00000000e+00 ...,   9.99600000e+03
   9.99700000e+03   9.99800000e+03]

# Using List Comprehension:
[[   0    1    2 ...,    8    9   10]
 [   1    2    3 ...,    9   10   11]
 [   2    3    4 ...,   10   11   12]
 ..., 
 [9986 9987 9988 ..., 9994 9995 9996]
 [9987 9988 9989 ..., 9995 9996 9997]
 [9988 9989 9990 ..., 9996 9997 9998]]

您可以看到,我的方法实际上产生了子数组,这与您提供的代码不同。

注意:

进行了这些测试,x仅列出了从0到10000的有序编号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

程序将数组划分为N个连续的子数组,以便每个子数组的总和为奇数

来自分类Dev

如何获得将长度为n的列表划分为m个子列表的所有可能组合

来自分类Dev

使用numpy将一维数组划分为不同大小的块

来自分类Dev

如何将数组划分为段,然后使用python numpy执行段的子段?

来自分类Dev

如何将m个组的大小为(m * n,)的numpy数组相加?

来自分类Dev

Javascript将数组拆分为n个子数组,块的大小无关紧要

来自分类Dev

我可以将数组划分为K个大小吗?

来自分类Dev

如何用标记将数组划分为多个部分?

来自分类Dev

使用约束将 N 个数组划分为 K 个组

来自分类Dev

将数组划分为几乎相等的总和

来自分类Dev

如何将大小为1的numpy数组插入空的numpy数组?

来自分类Dev

如何使用submod命令将顶级模块划分为2个子模块?

来自分类Dev

如何将php数组划分为多维数组?请看下面

来自分类Dev

根据key将json数组划分为json数组

来自分类Dev

根据组数将数组划分为子数组

来自分类Dev

将数组划分为 k 个非空非相交子段,使得每个子段具有奇数和

来自分类Dev

如何在Matlab中仅使用for循环将任何大小的图像划分为相等大小的块?

来自分类Dev

如何将包含日期的一维数组划分为几个较小的数组(二维数组)

来自分类Dev

使用mat2cell将MxN矩阵划分为1xN大小的M矩阵

来自分类Dev

如何使用默认填充值将2d numpy数组的所有内部值设置为相同大小

来自分类Dev

Haskell-如何将矩阵(二维数组)划分为组

来自分类Dev

如何将Vector2划分为Vector2数组?

来自分类Dev

如何将整数数组划分为偶数和奇数?

来自分类Dev

如何使用特定字符将数组拆分为更小的数组?

来自分类Dev

C - 将数组划分为线程并使用并行性找到最大数量

来自分类Dev

将float数组划分为类似的段(集群)

来自分类常见问题

将每个元素划分为二维数组

来自分类Dev

将原始类型的Javascript数组划分为多个部分

来自分类Dev

将数字数组按接近度划分为集合

Related 相关文章

  1. 1

    程序将数组划分为N个连续的子数组,以便每个子数组的总和为奇数

  2. 2

    如何获得将长度为n的列表划分为m个子列表的所有可能组合

  3. 3

    使用numpy将一维数组划分为不同大小的块

  4. 4

    如何将数组划分为段,然后使用python numpy执行段的子段?

  5. 5

    如何将m个组的大小为(m * n,)的numpy数组相加?

  6. 6

    Javascript将数组拆分为n个子数组,块的大小无关紧要

  7. 7

    我可以将数组划分为K个大小吗?

  8. 8

    如何用标记将数组划分为多个部分?

  9. 9

    使用约束将 N 个数组划分为 K 个组

  10. 10

    将数组划分为几乎相等的总和

  11. 11

    如何将大小为1的numpy数组插入空的numpy数组?

  12. 12

    如何使用submod命令将顶级模块划分为2个子模块?

  13. 13

    如何将php数组划分为多维数组?请看下面

  14. 14

    根据key将json数组划分为json数组

  15. 15

    根据组数将数组划分为子数组

  16. 16

    将数组划分为 k 个非空非相交子段,使得每个子段具有奇数和

  17. 17

    如何在Matlab中仅使用for循环将任何大小的图像划分为相等大小的块?

  18. 18

    如何将包含日期的一维数组划分为几个较小的数组(二维数组)

  19. 19

    使用mat2cell将MxN矩阵划分为1xN大小的M矩阵

  20. 20

    如何使用默认填充值将2d numpy数组的所有内部值设置为相同大小

  21. 21

    Haskell-如何将矩阵(二维数组)划分为组

  22. 22

    如何将Vector2划分为Vector2数组?

  23. 23

    如何将整数数组划分为偶数和奇数?

  24. 24

    如何使用特定字符将数组拆分为更小的数组?

  25. 25

    C - 将数组划分为线程并使用并行性找到最大数量

  26. 26

    将float数组划分为类似的段(集群)

  27. 27

    将每个元素划分为二维数组

  28. 28

    将原始类型的Javascript数组划分为多个部分

  29. 29

    将数字数组按接近度划分为集合

热门标签

归档