Python 将ndarray拆分为存储在列表中的较小ndarray
我目前正在寻找一种方法,在这种方法中,我可以将一个ndarray拆分为更小的ndarray 示例:给定形状为781440,3的ndarray,我想从中提取大小为78,72,3的较小ndarray列表,这将是20个较小的子ndarray 我试着用numpy.split 这将生成长度为72的列表 第一个条目的形状是78,20,3 为什么我无法提取所需的大小 拆分中的72是要拆分的元素数,而不是根据轴拆分的尺寸大小 但是,您可以使用:Python 将ndarray拆分为存储在列表中的较小ndarray,python,numpy,Python,Numpy,我目前正在寻找一种方法,在这种方法中,我可以将一个ndarray拆分为更小的ndarray 示例:给定形状为781440,3的ndarray,我想从中提取大小为78,72,3的较小ndarray列表,这将是20个较小的子ndarray 我试着用numpy.split 这将生成长度为72的列表 第一个条目的形状是78,20,3 为什么我无法提取所需的大小 拆分中的72是要拆分的元素数,而不是根据轴拆分的尺寸大小 但是,您可以使用: numpy.split(matrix,matrix.shape[1
numpy.split(matrix,matrix.shape[1]//72,axis=1)
对于给定的案例,将其拆分为20个长度为72的元素。请注意,您必须确保形状[1]可除以72,否则将引发ValueError。方法1:您可以使用made来完成此任务-
np.hsplit(arr,20) # creates list of 20 arrays
样本运行-
1输入阵列:
In [52]: a = np.random.randint(0,9,(2,6,3))
In [53]: a
Out[53]:
array([[[7, 8, 8],
[7, 7, 1],
[1, 6, 4],
[6, 3, 8],
[4, 7, 4],
[0, 6, 3]],
[[0, 8, 5],
[2, 2, 8],
[6, 0, 7],
[5, 4, 6],
[4, 3, 1],
[8, 6, 6]]])
2将轴=1分割为3个部分,因此每个部分/子阵列的长度为2,2,3。因此,我们将得到这3个阵列的列表:
In [54]: b = np.hsplit(a,3)
3.手动验证这些部件:
In [55]: b[0]
Out[55]:
array([[[7, 8, 8],
[7, 7, 1]],
[[0, 8, 5],
[2, 2, 8]]])
In [56]: b[1]
Out[56]:
array([[[1, 6, 4],
[6, 3, 8]],
[[6, 0, 7],
[5, 4, 6]]])
In [57]: b[2]
Out[57]:
array([[[4, 7, 4],
[0, 6, 3]],
[[4, 3, 1],
[8, 6, 6]]])
方法2:这项任务的另一个工具是-
在列表或数组中?因为72是将其拆分为的元素数。
In [55]: b[0]
Out[55]:
array([[[7, 8, 8],
[7, 7, 1]],
[[0, 8, 5],
[2, 2, 8]]])
In [56]: b[1]
Out[56]:
array([[[1, 6, 4],
[6, 3, 8]],
[[6, 0, 7],
[5, 4, 6]]])
In [57]: b[2]
Out[57]:
array([[[4, 7, 4],
[0, 6, 3]],
[[4, 3, 1],
[8, 6, 6]]])
np.array_split(arr,20,axis=1)