【发布时间】:2017-09-04 22:31:48
【问题描述】:
我正在尝试将长度为 40 的numpy.array 拆分为更小、大小相等的numpy.arrays,其中较小数组的数量由用户给出。允许在较小的数组之间有一些重叠,因为在给定较小数组的某种重叠形式的情况下,可能会出现全长只能被分割整除的情况。
如果我有一个数组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 不要平分它们。
有什么办法吗?
【问题讨论】:
-
恰恰相反:这些功能完全按照您所说的去做。向我们展示你得到的输出和你想要的输出。
-
添加了给定
numpy.split的示例 -
array_split的文档说它可以处理不均匀的分割;split旨在引发错误。 -
在
numpy.array_split上添加了示例和所需的输出。 -
是的...@aryamccarthy