小编lot*_*rio的帖子

Numpy等效于list.index

在一个被多次调用的低级函数中,我需要做相当于python的list.index,但是需要一个numpy数组.函数需要在找到第一个值时返回,否则引发ValueError.就像是:

>>> a = np.array([1, 2, 3])
>>> np_index(a, 1)
0
>>> np_index(a, 10)
Traceback (most recent call last):    
  File "<stdin>", line 1, in <module>
ValueError: 10 not in array
Run Code Online (Sandbox Code Playgroud)

我希望尽可能避免使用Python循环. np.where不是一个选项,因为它总是遍历整个数组; 一旦找到第一个索引,我需要停止的东西.


编辑:与问题相关的一些更具体的信息.

  • 大约90%的时间,我正在搜索的索引是阵列的前1/4到1/2.因此,这里可能存在2-4倍的加速因素.另外10%的时间值根本不在数组中.

  • 我已经分析了一些东西,并且调用np.where是瓶颈,至少占总运行时间的50%.

  • 提出一个并不重要ValueError; 它只需要返回一些显然表明该值不在数组中的东西.

我建议可能会在Cython中编写一个解决方案.

python numpy

18
推荐指数
3
解决办法
1万
查看次数

标签 统计

numpy ×1

python ×1