Python:创建子数组列表

时间:2016-02-15 15:13:21

标签: python numpy

我有一个庞大的数组但是为了说明我使用的是一个大小为14的数组。我有另一个包含2,3,3,6的列表。如何有效地不用看看创建一个新数组的列表,这样:

import numpy as np
A = np.array([1,2,4,5,7,1,2,4,5,7,2,8,12,3]) # array with 1 axis
subArraysizes = np.array( 2, 3, 3, 6 ) #sums to number of elements in A
B = list()
B[0] = [1,2]
B[1] = [4,5,7]
B[2] = [1,2,4]
B[3] = [5,7,2,8,12,3]

即。选择A中的前2个元素将其存储在B中,选择A的下3个元素将其存储在B中,依此类推,按照它在A中出现的顺序。

1 个答案:

答案 0 :(得分:3)

您可以使用np.split -

B = np.split(A,subArraysizes.cumsum())[:-1]

示例运行 -

In [75]: A
Out[75]: array([ 1,  2,  4,  5,  7,  1,  2,  4,  5,  7,  2,  8, 12,  3])

In [76]: subArraysizes
Out[76]: array([2, 3, 3, 6])

In [77]: np.split(A,subArraysizes.cumsum())[:-1]
Out[77]: 
[array([1, 2]),
 array([4, 5, 7]),
 array([1, 2, 4]),
 array([ 5,  7,  2,  8, 12,  3])]
相关问题