9
6

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 3 years have passed since last update.

【Python】Numpyにおけるdtype「int32」の理由(Windows環境)(2020年9月時点)

Last updated at Posted at 2020-09-12

私がNumpyの勉強を実施している時に気になったことがあります。
例えば以下の通りNumpyの配列を作成して「dtype」でデータ型を確認します。
すると、以下の通り「int32」が返ってきます。
※Windows環境が前提となります。

image.png

ここで疑問を感じました。

『なぜデフォルトが int32(32bit)なのか?』

#■ OS環境のビット数に依存するのか? ⇒ NO
最初はOSのビット数に依存しているのかと考えました。
しかし私の環境は以下の通り64bitです。
OS環境のビット数には依存していません。

image.png

#■ Python環境のビット数に依存するのか? ⇒ NO
次にPython環境のビット数に依存しているのかと考えました。
sysモジュールのmaxsizeを利用してPython環境のビット数を調べます。

32bit : 2147483647
64bit : 9223372036854775807

image.png

結果は上記の通り「9223372036854775807」なので、Python環境は「64bit」となります。
Python環境のビット数には依存していません。

#■ 結論 ⇒ C言語におけるlong型の仕様です
『なぜデフォルトが int32(32bit)なのか?』

この原因を理解するためには、Numpyの前提を思い出す必要がありました。

『NumPyの内部はC言語 (およびFortran)によって実装されているため非常に高速に動作する』

NumpyはC言語によって実装されており、np.int_はC longで定義されています。

参考:『Numpy データ型』

Microsoftによりデフォルトのlong型は4byte(4*8=32bit)とされています。
そのためWindowsにおいてはOSやpython、numpyのビット数に関わらず、
デフォルトでは np.int_がint32となっているようです。

参考:『C言語 基本タイプのサイズ』

結論は『C言語におけるlong型の仕様』でした。

9
6
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
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?