Как исправить: в true_divide обнаружено недопустимое значение


Одно предупреждение, с которым вы можете столкнуться при использовании NumPy:

RuntimeWarning : invalid value encountered in true_divide

Это предупреждение появляется, когда вы пытаетесь разделить на какое-то недопустимое значение (например, NaN, Inf и т. д.) в массиве NumPy.

Стоит отметить, что это всего лишь предупреждение , и NumPy просто вернет значение nan, когда вы попытаетесь разделить на недопустимое значение.

В следующем примере показано, как устранить это предупреждение на практике.

Как воспроизвести ошибку

Предположим, мы пытаемся разделить значения в одном массиве NumPy на значения в другом массиве NumPy:

import numpy as np

#define NumPy arrays
x = np.array([4, 5, 5, 7, 0])
y = np.array([2, 4, 6, 7, 0])

#divide the values in *x* by the values in *y*
np.divide (x, y)

array([2. , 1.25 , 0.8333, 1. , nan])

RuntimeWarning : invalid value encountered in true_divide

Обратите внимание, что NumPy делит каждое значение x на соответствующее значение y, но генерируется RuntimeWarning .

Это связано с тем, что последней выполненной операцией деления было деление нуля на ноль, что привело к значению nan .

Как устранить это предупреждение

Как упоминалось ранее, это RuntimeWarning является только предупреждением и не препятствует запуску кода.

Однако, если вы хотите подавить этот тип предупреждения, вы можете использовать следующий синтаксис:

np.seterr (invalid='ignore')

Это говорит NumPy скрыть любое предупреждение с некоторым «недопустимым» сообщением в нем.

Итак, если мы снова запустим код, мы не получим никакого предупреждения:

import numpy as np

#define NumPy arrays
x = np.array([4, 5, 5, 7, 0])
y = np.array([2, 4, 6, 7, 0])

#divide the values in *x* by the values in *y*
np.divide (x, y)

array([2. , 1.25 , 0.8333, 1. , nan])

Значение nan по-прежнему возвращается для последнего значения в выводе, но на этот раз предупреждающее сообщение не отображается.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.