Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy数组中查找最大元素比较索引_Python_Arrays_Numpy_Max - Fatal编程技术网

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])