You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何高效求大型稀疏数组逆并与向量相乘?

稀疏数组伪逆运算的高效优化方案

你当前通过np.linalg.pinv()求伪逆再与向量相乘的做法,本质是求解R3_mod @ X ≈ P2的最小二乘解。直接针对最小二乘问题求解,比先计算完整伪逆再做乘法更高效,尤其是针对含大量零元素的数组:

方案1:用Numpy原生最小二乘函数直接求解

无需先求伪逆,np.linalg.lstsq()会通过更高效的矩阵分解(如QR分解)直接得到解,底层实现比pinv()+dot()更优化:

import numpy as np
X, residuals, rank, singular_values = np.linalg.lstsq(R3_mod, P2, rcond=None)

方案2:利用稀疏矩阵库进一步优化

如果R3_mod的零元素占比极高,可以将其转为稀疏矩阵格式,用SciPy的稀疏最小二乘工具求解,能跳过零元素的无效运算,大幅降低内存占用和计算时间(即使当前21x21规模差异不大,后续规模扩展时优势会更明显):

from scipy.sparse import csr_matrix
from scipy.sparse.linalg import lsqr

# 转为压缩稀疏行格式
R3_sparse = csr_matrix(R3_mod)
# 求解最小二乘解,取返回结果的第一个元素
X = lsqr(R3_sparse, P2)[0]

补充说明

21x21的矩阵本身规模很小,两种优化方案的速度差异可能不显著,但从算法原理和扩展性来看,直接求解最小二乘是更优的思路,避免了伪逆计算中不必要的矩阵运算。

内容的提问来源于stack exchange,提问作者modishah123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:55:42