如何在Numpy数组中找到数字第一次出现的索引?速度对我来说很重要。我对以下答案不感兴趣,因为它们扫描整个数组,并且在找到第一个匹配项时不会停止:
itemindex = numpy.where(array==item)[0][0]
nonzero(array == item)[0][0]
注1:这个问题的答案似乎都不相关Is there a Numpy function to return the first index of something in an array?
注2:使用C编译的方法比使用Python循环更可取。
发布于 2011-10-05 19:05:48
Numpy 2.0.0有一个预定的特性请求:https://github.com/numpy/numpy/issues/2269
发布于 2015-04-22 21:56:01
虽然这对你来说太晚了,但是为了将来的参考:使用numba (1)是最简单的方法,直到numpy实现它。如果你使用的是anaconda python发行版,它应该已经安装了。代码将被编译,因此它将是快速的。
@jit(nopython=True)
def find_first(item, vec):
"""return the index of the first occurence of item in vec"""
for i in xrange(len(vec)):
if item == vec[i]:
return i
return -1
然后:
>>> a = array([1,7,8,32])
>>> find_first(8,a)
2
发布于 2012-12-12 00:30:43
您可以使用array.tostring()
,然后使用find()方法将布尔数组转换为Python字符串:
(array==item).tostring().find('\x01')
但是,这确实涉及到复制数据,因为Python字符串需要是不可变的。一个优点是,你还可以通过查找\x00\x01
来搜索上升沿
https://stackoverflow.com/questions/7632963
复制相似问题