Python 在numpy数组中查找最大元素比较索引
我有一个数组Python 在numpy数组中查找最大元素比较索引,python,arrays,numpy,max,Python,Arrays,Numpy,Max,我有一个数组a,我想找到a中给定值仍然大于的最大元素的位置 在本例中: a = np.array([0, 50, 5, 52, 60]) v = 55 v大于的最大元素是52(索引3),所以我想返回3 numpy函数argmax()不能用于此目的,因为它返回第一个元素。使用numpy执行此操作的快速正确方法是什么?您可以对数组进行切片,自己找到最大值,然后查询其索引: np.where(a==a[a<v].max()) Out: (array([3]),) np.where(a==a[
a
,我想找到a
中给定值仍然大于的最大元素的位置
在本例中:
a = np.array([0, 50, 5, 52, 60])
v = 55
v
大于的最大元素是52
(索引3),所以我想返回3
numpy函数
argmax()
不能用于此目的,因为它返回第一个元素。使用numpy执行此操作的快速正确方法是什么?您可以对数组进行切片,自己找到最大值,然后查询其索引:
np.where(a==a[a<v].max())
Out: (array([3]),)
np.where(a==a[a您可以将argmax
与where
组合使用:
>>> np.nanargmax(np.where(a < v, a, np.nan))
3
我还在寻找将这些值设置为其他值的方法,发现argmax也定义在屏蔽数组上。因此,它似乎可以与np.ma.masked_数组(a,a>=v.argmax()一起工作
也是,但我不确定,因为我以前没有使用过屏蔽数组。是的,屏蔽数组
也应该可以使用。我可能会使用np.ma.masked\u greater\u equal(a,v.argmax()
。但有人提出了一种快速方法,根据我的经验,掩蔽阵列的性能通常更差。这假设a
中有这样一个元素,否则它会失败
>>> np.where(a < v, a, np.nan)
array([ 0., 50., 5., 52., nan])