我创建了一个奇异矩阵。
mat = np.array([[ 1, 8, 50],
[ 8, 64, 400],
[ 50, 400, 2500]])
已经知道 mat
的逆的创建将引发 LinAlgError,我的目的是通过 try
传递异常和 exception
过程。
所以我试过了,这个:
try:
np.linalg.inv(mat)
except LinAlgError:
print('yes')
还有这个:
try:
np.linalg.inv(mat)
except LinAlgError("Singular matrix"):
print('yes')
还有这个:
try:
np.linalg.inv(mat)
except numpy.linalg.LinAlgError:
print('yes')
多次尝试时,我总是得到相同的 stackoverflow,说我通过尝试处理第一个异常创建了一个异常 😎
Traceback (most recent call last):
File "<ipython-input-18-de9bc8aa3ed1>", line 2, in <module>
np.linalg.inv(mat)
File "C:\Users\Azerty\PycharmProjects\OptionsHedgeFund\venv37\lib\site-packages\numpy\linalg\linalg.py", line 551, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
File "C:\Users\Azerty\PycharmProjects\OptionsHedgeFund\venv37\lib\site-packages\numpy\linalg\linalg.py", line 97, in _raise_linalgerror_singular
raise LinAlgError("Singular matrix")
numpy.linalg.LinAlgError: Singular matrix
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Azerty\PycharmProjects\OptionsHedgeFund\venv37\lib\site-packages\IPython\core\interactiveshell.py", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-18-de9bc8aa3ed1>", line 3, in <module>
except numpy.linalg.LinAlgError:
NameError: name 'numpy' is not defined
你知道如何定义LinAlgError
吗?在 exception ... :
?
您需要正确引用它,例如:
try:
np.linalg.inv(mat)
except <b>np.linalg.LinAlgError</b>:
print('yes')
上次尝试失败的原因是因为您将 numpy
库导入为 np
,而不是 numpy
。所以这意味着 numpy.linalg
没有意义,因为标识符 numpy
不存在。
我是一名优秀的程序员,十分优秀!