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])]
我有一个巨大的数组,但为了说明,我使用了一个大小为 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])]