numpy.seterr
-
numpy.seterr(all=None, divide=None, over=None, under=None, invalid=None)[source] -
Устанавливает обработку ошибок с плавающей запятой.
Обратите внимание, что операции с целочисленными скалярными типами (например,
int16) обрабатываются как операции с плавающей запятой и влияют на эти настройки.- Параметры
-
-
all{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional -
Устанавливает способ обработки всех типов ошибок с плавающей запятой сразу:
- ignore: Не выполняет никаких действий при возникновении исключения.
- warn: Выводит сообщение об ошибке (через модуль Python
warnings). - raise: Вызывает исключение
FloatingPointError. - call: Вызывает функцию, указанную с помощью функции
seterrcall. - print: Выводит сообщение об ошибке напрямую в
stdout. - log: Записывает ошибку в объект журнала, указанный в
seterrcall.
По умолчанию поведение не изменяется.
-
divide{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional -
Обработка деления на ноль.
-
over{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional -
Обработка переполнения с плавающей запятой.
-
under{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional -
Обработка подпотока с плавающей запятой.
-
invalid{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, optional -
Обработка недействительной операции с плавающей запятой.
-
- Возвращаемое значение
-
-
old_settingsdict -
Словарь, содержащий старые настройки.
-
См. также
-
seterrcall -
Устанавливает функцию обратного вызова для режима «call».
Примечания
Ошибки с плавающей запятой определены в стандарте IEEE 754 [1]:
- Деление на ноль: бесконечный результат, полученный из конечных чисел.
- Переполнение: результат слишком велик для выражения.
- Подпоток: результат настолько близок к нулю, что была потеряна точность.
- Недействительная операция: результат не является выражаемым числом, обычно указывает, что был получен NaN.
Примеры
>>> old_settings = np.seterr(all='ignore') #seterr to known value >>> np.seterr(over='raise') {'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'} >>> np.seterr(**old_settings) # reset to default {'divide': 'ignore', 'over': 'raise', 'under': 'ignore', 'invalid': 'ignore'}>>> np.int16(32000) * np.int16(3) 30464 >>> old_settings = np.seterr(all='warn', over='raise') >>> np.int16(32000) * np.int16(3) Traceback (most recent call last): File "<stdin>", line 1, in <module> FloatingPointError: overflow encountered in short_scalars
>>> from collections import OrderedDict >>> old_settings = np.seterr(all='print') >>> OrderedDict(np.geterr()) OrderedDict([('divide', 'print'), ('over', 'print'), ('under', 'print'), ('invalid', 'print')]) >>> np.int16(32000) * np.int16(3) 30464
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.seterr.html