获得两个大型阵列的线性组合的快速方法是什么?

我有两个尺寸为(87256 X 87256)的numpy数组A和B。

我有一个不断变化的单因素 alpha。

我正在尝试找到最快的获取方式:

阿尔法 * A + (1 - 阿尔法) * B

使用简单的 numpy,计算大约需要 4 分 8 秒。

计算这个数组的最快方法是什么?我有一个多核系统,所以并行计算不是限制。


暮色呼如
浏览 107回答 2
2回答

30秒到达战场

试试这两个选项:选项-A# multiplying only onceC = B + alpha*(A-B)选项-B我扩展了@Massifox 的回答。import numbaimport numpy as npdef get_result(A, B, alpha = 0.5):    return B + alpha*(A-B)get_result_jit = numba.vectorize(['float64(float64, float64, float64)'])(get_result)

杨__羊羊

尝试切换到Numba ,只需更改很少的代码行即可在 Numpy 上加速:通过充分利用 CPU 多核和/或 GPU 内核来并行化代码。Numba 是一个开源 JIT 编译器,可将 Python 和 NumPy 代码的子集转换为快速机器代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python