Jak naprawić: napotkano nieprawidłową wartość w true_divide


Jednym z ostrzeżeń, które możesz napotkać podczas korzystania z NumPy, jest:

 RuntimeWarning : invalid value encountered in true_divide

To ostrzeżenie pojawia się, gdy próbujesz podzielić przez nieprawidłową wartość (taką jak NaN, Inf itp.) w tablicy NumPy.

Należy zauważyć, że jest to tylko ostrzeżenie i NumPy po prostu zwróci wartość nan podczas próby podzielenia przez nieprawidłową wartość.

Poniższy przykład pokazuje, jak w praktyce zareagować na to ostrzeżenie.

Jak odtworzyć błąd

Załóżmy, że próbujemy podzielić wartości jednej tablicy NumPy przez wartości innej tablicy 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

Należy zauważyć, że NumPy dzieli każdą wartość x przez odpowiednią wartość y, ale generowany jest komunikat RuntimeWarning .

Dzieje się tak, ponieważ ostatnią wykonaną operacją dzielenia było podzielenie zera przez zero, co dało wartość nan .

Jak zareagować na to ostrzeżenie

Jak wspomniano wcześniej, to RuntimeWarning jest jedynie ostrzeżeniem i nie uniemożliwia wykonania kodu.

Jeśli jednak chcesz ukryć tego typu ostrzeżenie, możesz użyć następującej składni:

 n.p. seterr (invalid=' ignore ')

To mówi NumPy, aby ukrył wszelkie ostrzeżenia zawierające „nieprawidłowy” komunikat.

Jeśli więc uruchomimy kod ponownie, nie otrzymamy żadnych ostrzeżeń:

 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])

Wartość nan jest nadal zwracana dla ostatniej wartości wyjściowej, ale tym razem nie jest wyświetlany żaden komunikat ostrzegawczy.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:

Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *