numpy.seterr
- numpy.seterr(all=None, divide=None, over=None, under=None, invalid=None)[source]
-
Устанавливает, как обрабатываются ошибки с плавающей точкой.
Обратите внимание, что операции над целочисленными скалярными типами (такими как
int16) обрабатываются как операции с плавающей точкой и на них влияют эти настройки.- Параметры:
-
- all{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, необязательно
-
Устанавливает обработку всех типов ошибок с плавающей точкой сразу:
- ignore: Не предпринимается никаких действий при возникновении исключения.
- warn: Выводится сообщение
RuntimeWarning(через модуль Pythonwarnings). - raise: Выбрасывается исключение
FloatingPointError. - call: Вызывается функция, указанная с помощью функции
seterrcall. - print: Вывод предупреждения напрямую в
stdout. - log: Запись ошибки в объект журнала, указанный в
seterrcall.
По умолчанию текущее поведение не изменяется.
- divide{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, необязательно
-
Обработка деления на ноль.
- over{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, необязательно
-
Обработка переполнения с плавающей точкой.
- under{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, необязательно
-
Обработка подпотока с плавающей точкой.
- invalid{‘ignore’, ‘warn’, ‘raise’, ‘call’, ‘print’, ‘log’}, необязательно
-
Обработка недопустимой операции с плавающей точкой.
- Возвращает:
-
- old_settingsdict
-
Словарь, содержащий старые настройки.
См. также
seterrcall-
Установить функцию обратного вызова для режима «call».
-
geterr,geterrcall,errstate
Примечания
Ошибки с плавающей точкой определены в стандарте IEEE 754 [1]:
- Деление на ноль: бесконечный результат, полученный из конечных чисел.
- Переполнение: результат слишком большой, чтобы его можно было выразить.
- Подпоток: результат настолько близок к нулю, что была потеряна точность.
- Недопустимая операция: результат не является выразимым числом, обычно указывает на то, что был создан NaN.
Примеры
>>> orig_settings = np.seterr(all='ignore') # seterr to known value >>> np.int16(32000) * np.int16(3) 30464 >>> np.seterr(over='raise') {'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'} >>> 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 scalar multiply>>> old_settings = np.seterr(all='print') >>> np.geterr() {'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'} >>> np.int16(32000) * np.int16(3) 30464 >>> np.seterr(**orig_settings) # restore original {'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.seterr.html