Python 在三维数组的最后一个维度上的棘手numpy argmax

Python 在三维数组的最后一个维度上的棘手numpy argmax,python,arrays,numpy,argmax,Python,Arrays,Numpy,Argmax,如果有一个形状(9,1,3)的数组 我想找到第三维的argmax索引,在这个例子中是185,所以索引7 我想这个解决方案与重塑有关,但我不能对它掉以轻心。谢谢你的帮助 您可能必须这样做: data = np.array([[[ 6, 12, 108]], [[122, 112, 38]], [[ 57, 101, 62]], [[119, 76, 177]], [[ 46, 62, 2]], [[127, 61, 155]], [

如果有一个形状(9,1,3)的数组

我想找到第三维的argmax索引,在这个例子中是185,所以索引7


我想这个解决方案与重塑有关,但我不能对它掉以轻心。谢谢你的帮助

您可能必须这样做:

data = np.array([[[  6,  12, 108]],

   [[122, 112,  38]],

   [[ 57, 101,  62]],

   [[119,  76, 177]],

   [[ 46,  62,   2]],

   [[127,  61, 155]],

   [[  5,   6, 151]],

   [[  5,   8, 185]],

   [[109, 167,  33]]])

np.argmax(data[:,0][:,2])
 7

我不知道这有什么棘手的。但是,获得沿最后一个轴的最大元素索引的一种方法是使用和,如下所示:

或者,您可以使用:

In [63]: np.unravel_index(np.argmax(arr), arr.shape)
Out[63]: (7, 0, 2)

In [64]: arr[(7, 0, 2)]
Out[64]: 185

听起来更像是想要
np.argmax(你的数组[:,0,2])
。说“第三维度的argmax索引”真的没有多大意义。你可以问argmax的第三个坐标(应该是2,而不是7)或者第一个坐标(应该是7),或者在取[:,0,2]之后切片数组的argmax(正如PP所建议的,实际上是7)。我不明白为什么每个项都是单例列表,看起来像是一个糟糕的建模。@PaulPanzer
np.argmax(np.max(arr,2))怎么样
?@kmario23或
np.undravel\u索引(np.argmax(arr),arr.shape)
?任何结果中包含7的东西。什么是
数据[:,0][:,2]
?请只做
数据[:,0,2]
而不是创建不必要的中间层。是的,非常好。但是你传播这种草率的言论并没有起到任何作用。哦,请不要宣传我的一次性评论;-)或者,如果您必须使用另一个;我觉得这样更好。谢谢你,诡计是相对的,到目前为止我还没有花那么多时间在np上,尽管我将来会花时间在np上。@Thoshharris当然!但是,你不必明确地感谢。向上投票的答案,如果对你有帮助的话,在这样的情况下就足够了。@kmario23你是对的,我是对的,但你必须得到最多15个代表,直到它出现为止;)
# find `max` element along last axis 
# and get the index using `argmax` where `arr` is your array
In [53]: np.argmax(np.max(arr, axis=2))
Out[53]: 7
In [63]: np.unravel_index(np.argmax(arr), arr.shape)
Out[63]: (7, 0, 2)

In [64]: arr[(7, 0, 2)]
Out[64]: 185