在 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)
有没有更好(=更快)的方法来做到这一点?
在我的电脑上,你当前的方法需要 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())