我在使用numpy.linalg
模块中的pinv
函数时遇到问题。我想反转一个矩形矩阵A
:
try:
Binv = np.linalg.pinv(A)
except:
print("an error occurs")
当我运行代码时,没有引发异常,但是在我的Python提示符中出现了以下红色文本:init_dgesdd failed init
。
但是,当我在其他上下文(不同的形状,不同的条件值......)中将我的代码与其他矩阵一起使用时,它工作正常。
调查错误后,它似乎来自内存问题。当我使用具有 (105 x 177144) 形状的矩阵时,它可以工作。但是当我使用具有 (105 x 178668) 形状的矩阵时,它不起作用。
此外,对 numpy.linalg.umath_linalg.c.src 代码的 quik 查看表明,我上一篇文章中提到的错误是在内存缓冲区的内存分配失败时引发的。此内存缓冲区用于存储 U、S、VT 和 SVD 计算期间所需的所有中间数组。