python - 求解大量小型线性系统

标签 python numpy scipy

我需要用 Python 求解大量 3x3 对称正定系统。到目前为止,我做到了

res = numpy.zeros(n)
for k, obj in enumerate(data_array):
    # construct A, rhs, idx from obj
    res[idx] += numpy.linalg.solve(A, rhs)

这会产生正确的结果,但是如果 n 很大,它也会很慢。 (嗯...是的。)也许 3x3 不是问题大小,调用 solve() 很有意义。

有什么提示吗?

最佳答案

在 NumPy 1.8 及更高版本中,numpy.linalg.solve actually broadcasts .对于 numpy.linalg.solve(a, b),如果 b.ndim == a.ndim - 1,它将执行广播矩阵向量求解;否则,它将进行广播矩阵-矩阵求解。 (没有记录此决策标准;我必须查看来源。)

如果您可以有效地构造一个 Arhs 的堆栈,您可以调用一次 solve 并避免 Python 循环。

关于python - 求解大量小型线性系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38105390/

相关文章:

python - 如何使用 Pandas/Matplotlib 绘制 X 轴上的日期、Y 轴上的时间以及 HH :MM format as tick labels? 中的当前时间

python - 从Python列表中的每个数字中减去一个值?

python - bool 减法 DeprecationWarning

python - 如何计算非常大的 scipy 稀疏矩阵之间的点积

python - 快速(呃)numpy 花哨的索引和减少?

python - 列出来自 Python 调试器的理解范围错误

python - 在单元测试中哪里捕获键盘中断?

python - 如何使 Python 中的绘图更加流畅?

python - python 中 ROI 的质心

python - 在 Python 中集成离散点