我有一个数组a
,我想在a
中找到给定值仍然大于的最大元素的位置。
在这个例子中:
a = np.array([0, 50, 5, 52, 60])
v = 55
v
大于52
(索引3)的最大元素,所以我想返回3.
numpy函数argmax()
不能用于此目的,因为它返回第一个元素。用numpy做这个快速而正确的方法是什么?
答案 0 :(得分:4)
您可以将argmax
与where
合并:
>>> np.nanargmax(np.where(a < v, a, np.nan))
3
在np.where
应用v
(在计算中忽略nan
)之前,nanargmax
会将nan
之上的所有值替换为>>> np.where(a < v, a, np.nan)
array([ 0., 50., 5., 52., nan])
:
main.cpp:20:29: warning: the address of 'std::__cxx11::string content(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> > (*)())' will always evaluate as 'true' [-Waddress]
答案 1 :(得分:3)
您可以对数组进行切片并找到最大值,然后查询其索引:
np.where(a==a[a<v].max())
Out: (array([3]),)