在数组的一个特定维度中执行操作

时间:2017-05-03 15:24:18

标签: python numpy

我在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循环。

我希望我足够清楚!谢谢你的帮助

2 个答案:

答案 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的参数,summax都是薄包装

答案 1 :(得分:2)

为了这个目的,numpy中的大多数函数都会使用echo关键字参数:

axis

这将找到第5轴的最大值(它们从0开始)。结果将是data.max(axis=4) 形状。