如何获取NumPy数组沿某一轴的最大元素索引
我有一个二维的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])