J'ai essayé de savoir si le type numérique NumPy hérite du type numérique Python correspondant.
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)))
Quand j'exécute ce code
<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
Et seuls numpy.float64
(et son alias numpy.float_
) et numpy.complex128
(et son alias numpy.complex_
) correspondent respectivement aux types Python correspondants float
et`. Cela semble être un sous-type de complexe ».
numpy.float64
est jsonable dans la bibliothèque standard json
, mais notez que la valeur renvoyée est de type Python. Par exemple, l'expression suivante est du type «float» de Python.
import json
type(json.loads(json.dumps(np.float64(64))))
D'autres types numériques NumPy entraîneront une erreur avec la valeur par défaut json
.
Recommended Posts