Die Zukunft Warnung Warnung geschieht, wenn Sie so etwas tun:Warum „None in numpy.asarray (...)“ eine Zukunft führen
>>> numpy.asarray([1,2,3,None]) == None
die derzeit False
zurückkehrt, aber ich verstehe, wird eine Rückkehr Array mit [False,False,False,True]
in einer zukünftigen Version von Numpy.
Wie diskutiert on the numpy discussion list der Weg um dies zu testen ist a is None
.
Was ich verwirrt, ist das Verhalten des in
Schlüsselwort mit einem 1D-Array im Vergleich zu einer Liste:
>>> None in [1,2,3,None]
True
>>> None in numpy.asarray([1,2,3,None])
__main__:1: FutureWarning: comparison to 'None' will result in an elementwise
object comparison in the future
False
>>> 1 in numpy.asarray([1,2,3,None])
True
EDIT (siehe Kommentare) - Es gibt wirklich zwei verschiedene Fragen:
- Warum verursacht dies eine
FutureWarning
- was wird das zukünftige Verhalten vonNone in numpy.asarray(...)
mit dem verglichen werden, was es jetzt ist? - Warum der Unterschied im Verhalten von
in
von einemlist
; kann ich testen, ob mein ArrayNone
enthält, ohne es in eine Liste zu konvertieren oder einefor
-Schleife zu verwenden?
Numpy Version ist 1.9.1, Python 3.4.1
Warum sollte Ihr Array "None" enthalten? Sehen Sie sich den 'dtype' eines Beispiels mit' None' an. Ist es das was du willst? Vermischst du zufällig 'None' mit' np.nan'? – hpaulj
Ich verwende Daten, die 'None' enthalten könnten. Ich weiß, dass 'None' nicht' np.nan' ist. Meine genaue Situation ist komplizierter als mein Beispiel, aber das ist nicht wirklich relevant für die Frage. Blick auf den 'dtype' funktioniert aber. Vielen Dank. Übrigens, 'np.nan in np.asarray ([1,2,3, np.nan])' wird auch 'False' zurückgeben. Also sollte meine Frage im Allgemeinen "in" und numpy Arrays sein. – szmoore
Obwohl "dtype" immer noch "object" ist, wenn Sie ein Segment von einer Matrix nehmen, die 'None' enthält, auch wenn dieses Segment keine' None' enthält. – szmoore