NumPy 中的右矩阵除法,还有比 np.linalg.inv() 更好的方法吗?

问题描述 投票:0回答:1

在 pyhton numpy 中进行正确矩阵除法(即 xA = B)的最快方法是什么? A 和 B 是 (NxN) 方阵,并且 A 是可逆的,因此我想计算方程 x = BA^{-1}。

我问是因为对于左矩阵除法,Ax = B,x = A^{-1}B,由于速度原因,使用

x = np.linalg.solve(A,B)
优于
x = np.linalg.inv(A) @ B

但是我还没有找到一种方法来实现正确的矩阵除法。现在我使用

x = B @ np.linalg.inv(A)
有没有更好(=更快)的方法来做到这一点?

python numpy linear-algebra
1个回答
0
投票

在我的电脑上,你当前的方法需要 20 秒,scipy 需要 13 秒:

import numpy as np
import datetime
from scipy.linalg import solve

A = np.random.rand(10000, 10000)
B = np.random.rand(10000, 10000)

#Your currrent method
print(datetime.datetime.now())
x = B @ np.linalg.inv(A)
print(datetime.datetime.now())

#From scipy
print(datetime.datetime.now())
x = solve(A, B)
print(datetime.datetime.now())
© www.soinside.com 2019 - 2024. All rights reserved.