1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonとNumPyの数値型の継承関係

Posted at

NumPyの数値型が、対応するPythonの数値型を継承しているかどうか調べてみました。

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)))

このコードを実行すると、

<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

となり、numpy.float64(とそのエイリアスのnumpy.float_)、およびnumpy.complex128(とそのエイリアスのnumpy.complex_)のみが、それぞれ対応するPythonの型floatcomplexのサブタイプのようです。

numpy.float64は、標準ライブラリjsonではjsonableですが、戻した値は、Pythonの型になっているので注意が必要です。例えば、次の式はPythonのfloat型になります。

import json
type(json.loads(json.dumps(np.float64(64))))

それ以外のNumPyの数値型は、デフォルトのjsonでは、エラーとなります。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?