【发布时间】:2020-10-12 13:24:12
【问题描述】:
我正在尝试在 3D 数组中标记最大值的值和索引,在第三个轴上获取最大值。 现在这在较低的维度上会很明显:
argmaxes=np.argmax(array)
maximums=array[argmaxes]
但是 NumPy 不能正确理解高于 1D 的第二种语法。
假设我的 3D 数组具有形状 (8,8,250)。 argmaxes=np.argmax(array,axis=-1)将返回一个 (8,8) 数组,其中的数字介于 0 到 250 之间。现在我的预期输出是一个 (8,8) 数组,其中包含第三维中的最大数字。我可以使用maxes=np.max(array,axis=-1) 来实现这一点,但这会重复两次相同的计算(因为我需要值和索引来进行以后的计算)
我也可以只做一个粗略的嵌套循环:
for i in range(8):
for j in range(8):
maxes[i,j]=array[i,j,argmaxes[i,j]]
但是有没有更好的方法来做到这一点?
【问题讨论】:
标签: python numpy numpy-ndarray