首页 > 解决方案 > 查找符合条件的第一个值,而不是其索引

问题描述

我有一个包含这些元素的数组:

array= [21558  43101  64638  86173 107701 129232 150775 172355 193864 215457
237071 258586 280130 301687 23255 344790 366285 387838 409365 430856
452367 473893 495456 516955 538543 560110 581641 603188]

在我的程序中,有一个n随机排序的变量。我想要实现的目标非常简单,但我就是什么都做不了。

通过下面的行,我将找到大于的第一个值的索引n

value_index=np.where(array > n)[0][0]

我需要的是找到它所代表的值,而不是索引。

当然,我可以简单地插入value_index变量并在列表中调用该值,但我正在尝试尽可能高效。

谁能帮我找到找到这个值的最快方法?

标签: pythonarraysnumpy

解决方案


Numpy 通常不擅长在不先计算其余值的情况下获得第一个。没有等同于 Pythons 的

next(x  for x in array if x > n)

相反,您必须计算 的掩码x > n,并获得它的第一个索引。有比这样做更好的方法np.where

ind = np.flatnonzero(array > n)[0]

或者

ind = np.argmax(array > n)[0]

无论哪种情况,获得价值的最佳选择是

array[ind]

推荐阅读