首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Numpy第一次出现大于现有值的值

Numpy第一次出现大于现有值的值
EN

Stack Overflow用户
提问于 2013-04-27 03:35:51
回答 5查看 188.1K关注 0票数 188

我在numpy中有一个一维数组,我想找出一个值超过numpy数组中的值的索引的位置。

例如。

代码语言:javascript
复制
aa = range(-10,10)

在超过值5aa中查找位置。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-27 03:42:17

这会更快一点(看起来也更好)

代码语言:javascript
复制
np.argmax(aa>5)

由于argmax将在第一个True处停止(“如果多次出现最大值,则返回与第一个出现的索引对应的索引。”)并且不保存另一个列表。

代码语言:javascript
复制
In [2]: N = 10000

In [3]: aa = np.arange(-N,N)

In [4]: timeit np.argmax(aa>N/2)
100000 loops, best of 3: 52.3 us per loop

In [5]: timeit np.where(aa>N/2)[0][0]
10000 loops, best of 3: 141 us per loop

In [6]: timeit np.nonzero(aa>N/2)[0][0]
10000 loops, best of 3: 142 us per loop
票数 244
EN

Stack Overflow用户

发布于 2014-07-30 17:09:54

对于已排序的数组内容,还有一个更快的方法:searchsorted

代码语言:javascript
复制
import time
N = 10000
aa = np.arange(-N,N)
%timeit np.searchsorted(aa, N/2)+1
%timeit np.argmax(aa>N/2)
%timeit np.where(aa>N/2)[0][0]
%timeit np.nonzero(aa>N/2)[0][0]

# Output
100000 loops, best of 3: 5.97 µs per loop
10000 loops, best of 3: 46.3 µs per loop
10000 loops, best of 3: 154 µs per loop
10000 loops, best of 3: 154 µs per loop
票数 109
EN

Stack Overflow用户

发布于 2013-04-27 03:42:53

代码语言:javascript
复制
In [34]: a=np.arange(-10,10)

In [35]: a
Out[35]:
array([-10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,   2,
         3,   4,   5,   6,   7,   8,   9])

In [36]: np.where(a>5)
Out[36]: (array([16, 17, 18, 19]),)

In [37]: np.where(a>5)[0][0]
Out[37]: 16
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16243955

复制
相关文章

相似问题

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