我有大量小型线性方程组,我想使用 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 中。
最佳答案
对于那些现在回来阅读这个问题的人,我想我会节省其他人的时间并提到 numpy 现在使用广播来处理这个问题。
因此,在 numpy 1.8.0 及更高版本中,可以使用以下方法求解 N 个线性方程。
x = np.linalg.solve(A,b)
关于python - 在numpy中求解大量小方程组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13432129/