gpt4 book ai didi

python - 将数组拆分为大小相等的窗口

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:48 25 4
gpt4 key购买 nike

我正在尝试将长度为 40 的 numpy.array 拆分为更小的、大小相等的 numpy.array,其中给出了较小数组的数量由用户。允许在较小的阵列之间有一些重叠,因为在给定较小阵列的某种形式的重叠的情况下,可能会出现全长只能被拆分整除的情况。

如果我有一个数组 np.array([range(40)])我不得不将它分成 37 个子数组,子数组列表应该是这样的:

[1, 2, 3], [3, 4, 5], [5, 6, 7], ... [38, 39, 40]

我尝试使用 numpy.split 但这仅在长度可被大小整除时有效,并且 numpy.array_split 生成不均匀的大小。

使用 numpy.split 的例子

>> import numpy as np
>>> a = np.random.randint(6,size=(40))
>>> b = np.split(a,37)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/numpy/lib/shape_base.py", line 508, in split
'array split does not result in an equal division')
ValueError: array split does not result in an equal division

还有 numpy.array_split

>>> a = np.random.randint(5,size=(40))
>>> b = np.array_split(a,37)
>>> print len(b)
37
>>> print b[0].shape
(2,)
>>> print b[3].shape
(1,)
>>> print b[5].shape
(1,)
>>> print b[6].shape
(1,)
>>> print b[30].shape
(1,)
>>>

numpy.array_split 不等分它们。

有什么解决办法吗?

最佳答案

您所描述的称为(滑动)窗口,而不是拆分。

查看此答案:https://stackoverflow.com/a/15722507/7802200

您想要的是使用那里开发的 window_stack 函数,widthlen(a) - n_splits + 1

关于python - 将数组拆分为大小相等的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com