gpt4 book ai didi

python - 有没有比 np.diff 更快的替代品?

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:41 25 4
gpt4 key购买 nike

我关心以下函数的速度:

def cch(tau):
return np.sum(abs(-1*np.diff(cartprod)-tau)<0.001)

其中 "cartprod" 是一个列表变量,如下所示:

cartprod = np.ndarray([[0.0123,0.0123],[0.0123,0.0459],...])

这个列表的长度大约是 2500 万。基本上,我试图找到一种显着更快的方法来返回 np.ndarray 中每对列表的差异列表。是否有比 np.diff 更快的算法或函数?或者,np.diff 是不是一切都结束了?我也对其他任何事情持开放态度。

编辑:谢谢大家的解决方案!

最佳答案

我认为您通过重复返回多个长度约为 2500 万的 np.arrays 而不是 np.diff 很慢来撞墙。我写了一个等效的函数,它遍历数组并计算结果。该功能需要与 numba 一起运行才能更快。我希望这是可以接受的。

arr = np.random.rand(25000000, 2)

def cch(tau, cartprod):
return np.sum(abs(-1*np.diff(cartprod)-tau)<0.001)
%timeit cch(0.01, arr)

@jit(nopython=True)
def cch_jit(tau, cartprod):
count = 0
tau = -tau
for i in range(cartprod.shape[0]):
count += np.less(np.abs(tau - (cartprod[i, 1]- cartprod[i, 0])), 0.001)
return count
%timeit cch_jit(0.01, arr)

产生

294 ms ± 2.82 ms 
42.7 ms ± 483 µs

大约快 6 倍。

关于python - 有没有比 np.diff 更快的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980469/

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