如何尝试 - 由于NumPy中的奇点而导致非法矩阵操作

ely*_*ely 19 python numpy linear-algebra

在NumPy中,我试图用来linalg计算Newton-Raphson方案每一步的矩阵求逆(问题大小有意为小,以便我们可以反演分析计算的Hessian矩阵).然而,在我走向收敛之后,Hessian接近于单数.

NumPy中是否有任何方法可以让我测试矩阵是否被认为是奇异的(计算行列式不够健壮)?理想情况下,如果有一种方法可以使用try except块来捕获NumPy的奇异数组错误,那将是很好的.

我该怎么做?终端给出的NumPy错误是:

raise LinAlgError, 'Singular matrix'
numpy.linalg.linalg.LinAlgError: Singular matrix
Run Code Online (Sandbox Code Playgroud)

wim*_*wim 37

语法如下:

import numpy as np

try:
    # your code that will (maybe) throw
except np.linalg.LinAlgError as err:
    if 'Singular matrix' in str(err):
        # your error handling block
    else:
        raise
Run Code Online (Sandbox Code Playgroud)


har*_*les 6

wim的回答不再适用于当前版本的NumPy(我在撰写本文时使用的是1.13).相反:

import numpy as np

try:
    # your code that will (maybe) throw
except np.linalg.LinAlgError as e:
    if 'Singular matrix' in str(e):
        # your error handling block
    else:
        raise
Run Code Online (Sandbox Code Playgroud)

  • 下次请随意直接编辑我的答案(现已更新)。 (3认同)