NumPy Argument Array Split

时间:2016-05-23 22:27:45

标签: python numpy

函数np.array_split(x, n)将数组x拆分为n大致相同大小的块。我想知道如果想要获得数组拆分位置的索引,最方便的形式是什么。

的数组
ix = [(start1, end1), (start2, end2), ... (startn, endn)]

这样

np.array_split(x, n)[i] == x[ix[i][0]:ix[i][1]]

我可以想到一些尴尬的方法来获得这个,但并不简单。

1 个答案:

答案 0 :(得分:0)

您知道子阵列的长度。只需使用它们来查找开始和结束索引:

a = np.arange(10)
res = np.array_split(a, 3)
end = list(np.add.accumulate([len(x) for x in res]))
start = [0] + end[:-1]
ix = list(zip(start, end))

现在,指数是:

>>> ix
[(0, 4), (4, 7), (7, 10)]

获得此结果:

>>> res
[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9])]

或:

for i in range(3):
    assert np.all(np.array_split(a, 3)[i] == a[ix[i][0]:ix[i][1]])