Catch numpy ComplexWarning как исключение - PullRequest
0 голосов
/ 21 февраля 2019

Рассмотрим следующий пример:

>>> 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(): из стандартной библиотеки, но он также не имеет никакого эффекта.

1 Ответ

0 голосов
/ 21 февраля 2019

Использование фильтра предупреждений stdlib вызывает их вместо печати:

>>> 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...