我有两个大小为(87256 X 87256)的numpy数组A和B。
我有一个不断变化的因子alpha。
我试图找到最快的获取途径:
alpha * A +(1-alpha)* B
使用简单的numpy进行计算大约需要4分8 s。
计算此数组的最快方法是什么?我有一个多核系统,所以并行计算不是一个限制。
答案 0 :(得分:1)
尝试切换到Numba,只需更改很少的代码行即可将Turbo放在Numpy上:通过充分利用CPU多核和/或GPU内核来并行化代码。
Numba是一个开源JIT编译器,可将Python和NumPy代码的子集转换为快速的机器代码。
答案 1 :(得分:1)
尝试以下两个选项:
# multiplying only once
C = B + alpha*(A-B)
我扩展了@Massifox的答案。
import numba
import numpy as np
def get_result(A, B, alpha = 0.5):
return B + alpha*(A-B)
get_result_jit = numba.vectorize(['float64(float64, float64, float64)'])(get_result)