Python: 创建子数组列表

Python: Creating list of subarrays

我有一个巨大的数组,但为了说明,我使用了一个大小为 14 的数组。我有另一个包含 2、3、3、6 的列表。我如何有效地创建一个新数组的列表,而不是 for look那:

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]

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

你可以使用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])]