gpt4 book ai didi

python - 加速 NumPy 的 where 函数

转载 作者:太空狗 更新时间:2023-10-30 01:02:37 26 4
gpt4 key购买 nike

我正在尝试提取超过某个阈值的一维数字数组的所有值的索引。该数组的长度约为 1e9

我在 NumPy 中的方法如下:

idxs = where(data>threshold) 

这需要 20 分钟以上的时间,这是 Not Acceptable 。我怎样才能加快这个功能?或者,是否有更快的替代方案?

(具体来说,在运行 10.6.7、1.86 GHz Intel、4GB RAM 的 Mac OS X 上需要这么长时间。)

最佳答案

试试mask array .这将创建相同数据的 View 。

所以语法是:

 b=a[a>threshold]

b 不是新数组(与 where 不同),而是 a 的 View ,其中元素与索引中的 bool 值相交。

例子:

import numpy as np
import time

a=np.random.random_sample(int(1e9))

t1=time.time()
b=a[a>0.5]
print(time.time()-t1,'seconds')

在我的机器上,打印出 22.389815092086792 seconds


编辑

我对 np.where 进行了同样的尝试,它同样快。我很怀疑:你是从数组中删除这些值吗?

关于python - 加速 NumPy 的 where 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791724/

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