Podczas przesyłania wartości NumPy Not-a-Number jako wartości logicznej, staje się ona wartością True, np. następująco.Dlaczego wartości "Nie liczba" są równe Prawdziwe, gdy są rzutowane jako boolean w Pythonie/Numpy?
>>> import numpy as np
>>> bool(np.nan)
True
Jest to przeciwieństwo tego, czego intuicyjnie oczekiwałbym. Czy istnieje zasada dźwięku, która jest podstawą tego zachowania?
(podejrzewam, że może być tak samo zachowanie wydaje się występować w oktawie.)
Moje przeczucie: NaN nie jest równe zero, więc jest prawdziwe, gdy jest konwertowane na wartość logiczną. Jeśli NaN byłyby fałszywe, konwersja jednostek pływających na wartości logiczne wymagałaby dwóch sprawdzeń, jednej dla zera i jednej dla NaN. (Ale podejrzewam, że interpretowanie pseudonimów Numpy jako booleansa nie jest tak powszechną praktyką ...) –
Jest tak również w C (na którym opiera się NumPy). Ze standardu: 'Gdy dowolna wartość skalarna jest konwertowana na _Bool, wynikiem jest 0, jeśli wartość jest równa 0; w przeciwnym razie wynikiem jest 1. "Przypis 59 jednoznacznie stwierdza, że" NaNy nie porównują się z 0 i w ten sposób przekształcają się w 1. " – jerry