Python Numpy:是否可以拆分大小不等的多维数组?
为缺少工作示例而道歉,因为很难提供这样的示例 我有一个多维数组,但维度大小不等。例如:Python Numpy:是否可以拆分大小不等的多维数组?,python,arrays,numpy,multidimensional-array,Python,Arrays,Numpy,Multidimensional Array,为缺少工作示例而道歉,因为很难提供这样的示例 我有一个多维数组,但维度大小不等。例如: >>> print results_rmse.shape (6,) >>> for i in range(len(results_rmse)): ... print(results_rmse[i].shape) ... (224, 5) (222, 5) (224, 5) (224, 5) (224, 5) (224, 5) 我想找到所有子数组的最终维数的最小值
>>> print results_rmse.shape
(6,)
>>> for i in range(len(results_rmse)):
... print(results_rmse[i].shape)
...
(224, 5)
(222, 5)
(224, 5)
(224, 5)
(224, 5)
(224, 5)
我想找到所有子数组的最终维数的最小值
例如,如果它们都是相同大小的
(6224,5)
,那么我会对3d数组执行min(results\u rmse[:,:,4].ravel())
:
In [205]: arr = np.arange(24).reshape(4,3,2)
In [206]: arr[:,:,0]
Out[206]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16],
[18, 20, 22]])
In [207]: arr[:,:,0].ravel()
Out[207]: array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22])
现在做一个不规则的阵列
In [208]: arr2 = np.empty(4, object)
In [209]: arr2[:] = list(arr)
In [212]: arr2[1] = arr2[1][:2,:]
In [214]: [x.shape for x in arr2]
Out[214]: [(3, 2), (2, 2), (3, 2), (3, 2)]
将其视为阵列列表:
In [215]: [x[:,0] for x in arr2]
Out[215]: [array([0, 2, 4]), array([6, 8]), array([12, 14, 16]), array([18, 20, 22])]
In [216]: np.concatenate(_)
Out[216]: array([ 0, 2, 4, 6, 8, 12, 14, 16, 18, 20, 22])
(与第一个相同,但缺少第10个)
请注意,Out[215]
具有不同的长度,因此只有concatenate
将它们连接起来,而不是np.array(Out[215])
我们还可以在选择之前连接:
In [217]: np.concatenate(arr2, axis=0)
Out[217]:
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[12, 13],
[14, 15],
[16, 17],
[18, 19],
[20, 21],
[22, 23]])
In [218]: np.concatenate(arr2, axis=0)[:,0]
Out[218]: array([ 0, 2, 4, 6, 8, 12, 14, 16, 18, 20, 22])
我不确定我是否完全理解这个问题,但是如果你有这种奇怪的张量(我不确定它是否有效),你可以沿着第一维迭代,并计算每个一维切片的最小值。最后,计算切片之间的最小值。