我在n维数组上执行给定操作时遇到问题。具体来说,我有一个维度为5的数组:
In [223]: data.ndim
Out[223]: 5
并且形状等于:
In [224]: shape(data)
Out[224]: (6, 26, 27, 6, 50)
我想知道的是,是否可以对所有其他维度(例如max(data[0,0,0,0,:])
)的最后一个维度执行操作,但不使用任何for循环。
我希望我足够清楚!谢谢你的帮助
答案 0 :(得分:6)
out[i,j,k,l] = max(data[i,j,k,l,:])
可以拼写为以下
out = np.max(data, axis=-1)
out = np.max(data, axis=4)
通常,保持尺寸非常有用,如out2[i,j,k,l,0] = max(data[i,j,k,l,:])
。你可以通过传递:
out2 = np.max(data, axis=-1, keepdims=True)
所以out2.shape == (6, 26, 27, 6, 1)
- 这很方便,因为它现在可以正确地对输入进行广播。
有关详细信息,请查看ufunc.reduce
的参数,sum
和max
都是薄包装
答案 1 :(得分:2)
为了这个目的,numpy中的大多数函数都会使用echo
关键字参数:
axis
这将找到第5轴的最大值(它们从0开始)。结果将是data.max(axis=4)
形状。