Python 在Numpy中查找下一个大于阈值的值的索引
假设我有一个数组Python 在Numpy中查找下一个大于阈值的值的索引,python,arrays,python-3.x,numpy,Python,Arrays,Python 3.x,Numpy,假设我有一个数组a a = np.array([50,49,47,55,68,70,65]) 我想要大于65的第一个值的索引(即4)。在Numpy中执行此任务的最快方法是什么(因为我的实际数据集要大得多)?argmax将找到第一个True的索引, 试试这个np.argmax(a>65)我建议使用和它的装饰器。多亏了这个库,您可以在使用普通Python时获得比numpy更好的性能分数(或与标准相当) 在您的情况下,可能是: import numba @numba.njit def find_g
a
a = np.array([50,49,47,55,68,70,65])
我想要大于65的第一个值的索引(即
4
)。在Numpy中执行此任务的最快方法是什么(因为我的实际数据集要大得多)?argmax将找到第一个True的索引,
试试这个np.argmax(a>65)
我建议使用和它的装饰器。多亏了这个库,您可以在使用普通Python时获得比numpy更好的性能分数(或与标准相当)
在您的情况下,可能是:
import numba
@numba.njit
def find_greater(array, threshold: int):
for i in range(len(array)):
if array[i] > threshold:
return i
这个选项在时间复杂度方面,最大
O(n)
(通常要少得多)比评论中建议的方法要好。所以,(a>65)。argmax()
?@coldspeed什么是时间复杂度?线性?你的数组没有排序,你不能指望有更好的结果。@coldspeed为什么要关闭?他想要最好的性能和时间复杂度,这是不同的情况。另外,您最多可以使用N个操作,而不是像argmax
@SzymonMaszke那样至少使用N个操作,我没有关闭它吗?你为什么打我?