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
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
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
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)
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.
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.
'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
Zusätzlich zu allen anderen Antworten ist zu beachten, dass 'np.array (1)' und 'np.array (2)' das gleiche Verhalten haben – Wondercricket