Як виправити: у 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: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами