ich eine Reihe habenfinden, wenn eine Zahl float64
z.B.
a = 1.22373
type(a) is float
Wie weise ich will finden, wenn eine Zahl
float64
oder nicht.
Wie ich mit Python oder Numpy finden werde?
ich eine Reihe habenfinden, wenn eine Zahl float64
z.B.
a = 1.22373
type(a) is float
Wie weise ich will finden, wenn eine Zahl
float64
oder nicht.
Wie ich mit Python oder Numpy finden werde?
Verwendung isinstance:
>>> f = numpy.float64(1.4)
>>> isinstance(f, numpy.float64)
True
>>> isinstance(f, float)
True
numpy.float64 von Python nativen Typ float vererbt wird. Das, weil es sowohl float als auch float64 ist (@Bakuriu thx, um darauf hinzuweisen). Aber wenn Sie für float64 Typ python float Instanzvariable überprüfen werden Sie False
in Ergebnis:
>>> f = 1.4
>>> isinstance(f, numpy.float64)
False
>>> isinstance(f, float)
True
Wenn Sie numpy Typen nur zu vergleichen sind, kann es besser sein, Ihre Vergleich der Anzahl zu stützen jedes dtype identifizieren, die ist was der zugrunde liegende C-Code tut. Auf meinem System 12 die Zahl für np.float64
ist:
>>> np.dtype(np.float64).num
12
>>> np.float64(5.6).dtype.num
12
>>> np.array([5.6]).dtype.num
12
es nutzen zu können, mit Nicht-numpy Werte auch, Sie könnten Ihren Weg durch sie mit so etwas wie Ente-Typ:
def isdtype(a, dt=np.float64):
try:
return a.dtype.num == np.dtype(dt).num
except AttributeError:
return False
Beachten Sie, dass ' isinstance (f, float) 'ist' True', wenn 'f' ein' np.float64' ist, weil 'np.float64' von pythons' float' erbt. – Bakuriu
Und in einer Weise, die wahr ist, solange man an der Idee festhält, dass ein 'float64' _is_ ein' float' ist. Bleib einfach bei diesem Konzept. – Alfe