python - 在numpy中求解大量小方程组

标签 python numpy linear-algebra

我有大量小型线性方程组,我想使用 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/

相关文章:

python - OpenCV 的 `getTextSize` 和 `putText` 返回错误的大小和像素较低的字母

python - 以同一形式对两个模型中的两个 Float 字段求和 - Odoo v8

python - 弃用警告 : Function when moving app (removed titlebar) - PySide6

python - 计算在某个范围内具有特定值的键的数量

performance - 最大限度地减少由于大量 Numpy 点调用而产生的开销

python - 从矩阵 B 的每一行中减去矩阵 A 的每一行,无需循环

python - 创建列表

python - 从 numpy 数组创建 Pandas 数据框并使用数组的第一列作为索引

python - 模拟 : assert mock_calls with a numpy array as argument raises ValueError and np. testing.assert_array_equal 不起作用

matrix - 基于 GF 的矩阵编程库