为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

暮色呼如 2022-05-24 13:06:51
我有两个尺寸为(87256 X 87256)的numpy数组A和B。我有一个不断变化的单因素 alpha。我正在尝试找到最快的获取方式:阿尔法 * A + (1 - 阿尔法) * B使用简单的 numpy,计算大约需要 4 分 8 秒。计算这个数组的最快方法是什么?我有一个多核系统,所以并行计算不是限制。
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

试试这两个选项:


选项-A

# multiplying only once

C = B + alpha*(A-B)

选项-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)


查看完整回答
反对 回复 2022-05-24
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

尝试切换到Numba ,只需更改很少的代码行即可在 Numpy 上加速:通过充分利用 CPU 多核和/或 GPU 内核来并行化代码。

Numba 是一个开源 JIT 编译器,可将 Python 和 NumPy 代码的子集转换为快速机器代码。


查看完整回答
反对 回复 2022-05-24
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信