我有大量的小型线性方程组,我想使用 numpy 有效地求解它们。基本上,给定的A[:,:,:]
和b[:,:]
,我希望找到x[:,:]
给定的A[i,:,:].dot(x[i,:]) = b[i,:]
。所以如果我不关心速度,我可以解决这个问题
for i in range(n):
x[i,:] = np.linalg.solve(A[i,:,:],b[i,:])
但是由于这涉及到 python 中的显式循环,并且由于A
通常具有类似 的形状(1000000,3,3)
,因此这样的解决方案会很慢。如果 numpy 达不到这一点,我可以在 fortran 中执行此循环(即使用 f2py),但如果可能的话,我更愿意留在 python 中。