2017-07-28 33 views
-1

Kann jemand dieses Verhalten erklären?Numpy.array (None) gibt None zurück aber ist nicht None

print np.array(None) 
> None 
print np.array(None) is None 
> False 
+0

'print' Ausgabe ist mehrdeutig. Die Tatsache, dass zwei Dinge gleich aussehen, bedeutet nicht, dass sie das gleiche Objekt sind oder dass sie gleich sind oder denselben Typ haben. "Print" None'' und 'print None' drucken doch das selbe, aber hoffentlich überrascht es dich nicht, dass" None "=" None ". – user2357112

+0

Zusätzlich zu allen anderen Antworten ist zu beachten, dass 'np.array (1)' und 'np.array (2)' das gleiche Verhalten haben – Wondercricket

Antwort

0

Sie haben tatsächlich ein Array-Objekt, dessen String-Darstellung ist None, und nicht das None Objekt wie Sie annehmen:

>>> np.array(None) 
array(None, dtype=object) 
>>> str(_) 
'None' 

, weshalb die print-Anweisungen None zeigt.

Aber was Sie eigentlich tun, ist:

np.array(None) is None # False 
0

np.array(None) nicht None ist. print druckt es einfach als None.

In [1]: a = np.array(None) 

In [2]: a 
Out[2]: array(None, dtype=object) 
1

Sie haben ein Objekt, das None als str() Wert hat, so dass das, was gedruckt wird:

>>> import numpy as np 
>>> np.array(None) 
array(None, dtype=object) 
>>> str(np.array(None)) 
'None' 

, die einen String-Wert mit den Buchstaben sind N, o, n und e. Das ist nicht das gleiche wie das None Singleton-Objekt, es sieht einfach gleich aus, wenn gedruckt.

0

Bitte erläutern Sie, was Sie suchen. Was Sie getan haben, ist zu fragen, ob np.array (None) vom Typ None ist, was nicht der Fall ist, daher die Rückgabe von False.

Verwandte Themen