cBlog

Tips for you.

NumPyでdtype=np.intみたいにnp.intを使うのはやめろ

スポンサーリンク
※当ブログのAmazon、iTunes、サウンドハウス等のリンクはアフィリエイトを利用しています。

np.int

dtype=np.intとかをよく見かけるが、NumPyのDocumentationを見ても(すべてを見たわけではないので“ほぼ”)見かけない。

Scalarsdtypeに載っていない。ndarraynumpy.arrayではnp.int32complexを使っている。なんだこいつと思っていた。

np.intintのエイリアスである。

>>> np.int is int
True

np.int_はnumpyのクラスである(環境によりビット長は変わる)。

>>> np.int_
<class 'numpy.int64'>

np.intxxは、もちろんnumpyのクラスである。

>>> np.int64
<class 'numpy.int64'>

Python 2のlongとPython 3のintにビット長の制限はないが、NumPyでは固定長配列の都合上、ビット長が定められる。

とはいえ、numpyでPythonの組み込み型を指定してもよしなにしてくれる。

>>> np.array([0, 1], dtype=int).dtype
dtype('int64')
>>> np.array([0, 1], dtype=float).dtype
dtype('float64')
>>> np.array([0, 1], dtype=complex).dtype
dtype('complex128')

np.intなどとするのは文字数の無駄と混乱の原因でしかないと思う。

参考

stackoverflow.com