找到numpy数组

时间:2017-04-30 14:51:13

标签: python arrays numpy max

我有一个数组a,我想在a中找到给定值仍然大于的最大元素的位置。

在这个例子中:

a = np.array([0, 50, 5, 52, 60])
v = 55

v大于52(索引3)的最大元素,所以我想返回3.

numpy函数argmax()不能用于此目的,因为它返回第一个元素。用numpy做这个快速而正确的方法是什么?

2 个答案:

答案 0 :(得分:4)

您可以将argmaxwhere合并:

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