如何获取NumPy数组沿某一轴的最大元素索引

156 投票
6 回答
325601 浏览
提问于 2025-04-16 14:37

我有一个二维的NumPy数组。我知道怎么在不同的方向上找到最大值:

>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])

那么我该怎么做才能找到这些最大值的位置呢?我想要的输出是 array([1,1,0]) 这样的结果。

6 个回答

46

argmax() 这个函数只会返回每一行中第一个出现的最大值的位置。

如果你需要对一个特定形状的数组进行操作,这个方法比 unravel 更好用:

import numpy as np
a = np.array([[1,2,3], [4,3,1]])  # Can be of any shape
indices = np.where(a == a.max())

你也可以调整你的条件:

indices = np.where(a >= 1.5)

上面的做法会给你你想要的结果。如果你想把结果转换成 x,y 坐标的形式,可以这样做:

x_y_coords =  zip(indices[0], indices[1])
125
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,3,1]])
>>> i,j = np.unravel_index(a.argmax(), a.shape)
>>> a[i,j]
4

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

183

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设置了一些“规则”,当这些规则被满足时,程序就会按照我们设定的方式去做事情。

比如说,如果你在玩一个游戏,只有当你的分数达到100分时,你才能进入下一关。这就是一个条件判断的例子。在代码中,我们也会使用类似的方式来检查条件。

有些时候,程序可能会遇到错误或者意外的情况,这时候我们需要让程序能够处理这些问题,而不是直接崩溃。就像在生活中,我们会想办法解决问题,而不是放弃。

总之,编程就像是在给计算机下指令,让它按照我们的想法去工作。我们需要清楚地告诉它在什么情况下该做什么,这样才能让程序顺利运行。

希望这些解释能帮助你更好地理解编程的基本概念!

>>> a.argmax(axis=0)

array([1, 1, 0])

撰写回答