Как исправить: в 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
n.p. divide (x,y)

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

RuntimeWarning : invalid value encountered in true_divide

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

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

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

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

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

 n.p. 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
n.p. divide (x,y)

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *