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