首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Numpy:快速找到第一个值索引

Numpy:快速找到第一个值索引
EN

Stack Overflow用户
提问于 2011-10-03 17:03:57
回答 12查看 96.8K关注 0票数 118

如何在Numpy数组中找到数字第一次出现的索引?速度对我来说很重要。我对以下答案不感兴趣,因为它们扫描整个数组,并且在找到第一个匹配项时不会停止:

代码语言:javascript
复制
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循环更可取。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-10-05 19:05:48

Numpy 2.0.0有一个预定的特性请求:https://github.com/numpy/numpy/issues/2269

票数 63
EN

Stack Overflow用户

发布于 2015-04-22 21:56:01

虽然这对你来说太晚了,但是为了将来的参考:使用numba (1)是最简单的方法,直到numpy实现它。如果你使用的是anaconda python发行版,它应该已经安装了。代码将被编译,因此它将是快速的。

代码语言:javascript
复制
@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

然后:

代码语言:javascript
复制
>>> a = array([1,7,8,32])
>>> find_first(8,a)
2
票数 32
EN

Stack Overflow用户

发布于 2012-12-12 00:30:43

您可以使用array.tostring(),然后使用find()方法将布尔数组转换为Python字符串:

代码语言:javascript
复制
(array==item).tostring().find('\x01')

但是,这确实涉及到复制数据,因为Python字符串需要是不可变的。一个优点是,你还可以通过查找\x00\x01来搜索上升沿

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7632963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档