繁体   English   中英

如何在python中加速numpy数组的乘积

[英]How to accelerate product of numpy arrays in python

我需要生产 numpy 数组,但对我来说太慢了。 怎么固定?

import time
import numpy as np
N = 2e6
a = np.arange(N)
b = np.arange(N)
c = np.arange(N)
d = np.arange(N)
t1 = time.time()
e = a*b*c*d
t1 = time.time() - t1
print(t1)

我尝试过产品列表,但我不知道如何在没有循环的情况下进行

list_a = np.array(a).tolist()
list_b = np.array(b).tolist()
list_c = np.array(c).tolist()
list_d = np.array(d).tolist()
list_e = list_a * list_b * list_b * list_d # Error

numpy速度非常快,比使用for s 或其他 Python 循环方式快得多,但使用numexpr绝对可以赢得更快的速度:

import numpy as np
import numexpr as ne
N = 2e6
a = np.arange(N)
b = np.arange(N)
c = np.arange(N)
d = np.arange(N)

print(np.array_equal(a*b*c*d, ne.evaluate('a*b*c*d')))
#prints True

以下是时间安排:

%timeit a*b*c*d
%timeit ne.evaluate('a*b*c*d') 
30.7 ms ± 480 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
10 ms ± 101 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM