gpt4 book ai didi

python / NumPy : all values in array up to x?

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:24 27 4
gpt4 key购买 nike

我有一个这样的有序数组:numpy.array([1, 2, 5, 10, 25, 36, 66, 90, 121, 230, 333, 500])

假设我希望所有值都达到 60(如果 60 不在其中,我想在第一个大于 60 的值处停止),所以我想要 [1, 2, 5, 10, 25, 36 , 66]。如果我将 numpy.where() 与 <= 60 一起使用,它会在 66 之前停止。

我的解决方案

from numpy import *
x = array([1, 2, 5, 10, 25, 36, 66, 90, 121, 230, 333, 500])
print x[:where(x >= 60)[0][0]+1]
>>>[ 1 2 5 10 25 36 66]

最佳答案

有一个特定的 numpy 函数可以执行此操作,np.searchsorted,它比 bisect 快得多。

a=np.arange(1e7)
c=2e6
%timeit bisect.bisect(a,c)
10000 loops, best of 3: 31.6 us per loop
%timeit np.searchsorted(a,c)
100000 loops, best of 3: 6.77 us per loop

更值得注意的是,它还有一个特定的关键字 side 用于包含或不包含最后一点:

In [23]: a[:a.searchsorted(66,side='right')]
Out[23]: array([ 1, 2, 5, 10, 25, 36, 66])

In [24]: a[:a.searchsorted(66,side='left')]
Out[24]: array([ 1, 2, 5, 10, 25, 36])

关于 python / NumPy : all values in array up to x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com