Ich habe versucht herauszufinden, ob der numerische Typ NumPy den entsprechenden numerischen Typ Python erbt.
import builtins
import numpy as np
np_numt = [
np.bool_,
np.int_,
np.intc,
np.intp,
np.int8,
np.int16,
np.int32,
np.int64,
np.uint8,
np.uint16,
np.uint32,
np.uint64,
np.float_,
np.float16,
np.float32,
np.float64,
np.complex_,
np.complex64,
np.complex128
]
py_numt = ["bool", "int", "float", "complex"]
for np_t in np_numt:
py_t = next(tstr for tstr in py_numt if tstr in str(np_t))
print(np_t, py_t, issubclass(np_t, getattr(builtins, py_t)))
Wenn ich diesen Code ausführe
<class 'numpy.bool_'> bool False
<class 'numpy.int32'> int False
<class 'numpy.int32'> int False
<class 'numpy.int64'> int False
<class 'numpy.int8'> int False
<class 'numpy.int16'> int False
<class 'numpy.int32'> int False
<class 'numpy.int64'> int False
<class 'numpy.uint8'> int False
<class 'numpy.uint16'> int False
<class 'numpy.uint32'> int False
<class 'numpy.uint64'> int False
<class 'numpy.float64'> float True
<class 'numpy.float16'> float False
<class 'numpy.float32'> float False
<class 'numpy.float64'> float True
<class 'numpy.complex128'> complex True
<class 'numpy.complex64'> complex False
<class 'numpy.complex128'> complex True
Und nur numpy.float64
(und sein Alias numpy.float_
) und numpy.complex128
(und sein Alias numpy.complex_
) entsprechen den entsprechenden Python-Typen float
bzw.`. Es scheint ein Untertyp des Komplexes zu sein.
numpy.float64
ist in der Standardbibliothek json
jsonable, aber beachten Sie, dass der zurückgegebene Wert vom Typ Python ist. Der folgende Ausdruck ist beispielsweise vom Typ "float" von Python.
import json
type(json.loads(json.dumps(np.float64(64))))
Andere numerische NumPy-Typen führen zu einem Fehler mit dem Standardwert "json".
Recommended Posts