考虑以下示例:
>>> import numpy as np
>>> a = np.array([1.0, 2.1j])
>>> b = np.array(a, dtype=np.float64)
/Users/goerz/anaconda3/bin/ipython:1: ComplexWarning: Casting complex values to real discards the imaginary part
#!/Users/goerz/anaconda3/bin/python
如何将 ComplexWarning 捕获为异常?
我试过np.seterr
,但这没有效果(因为它只与浮点警告有关,例如下溢/溢出)。
我也试过标准库中的with warnings.catch_warnings():
上下文管理器,但它也没有效果。
使用 stdlib warnings filter导致这些提高而不是打印:
>>> warnings.filterwarnings(action="error", category=np.ComplexWarning)
>>> b = np.array(a, dtype=np.float64)
ComplexWarning: Casting complex values to real discards the imaginary part
您可以使用 warnings.resetwarnings
将其重置为默认过滤器.
我是一名优秀的程序员,十分优秀!