私がNumpyの勉強を実施している時に気になったことがあります。
例えば以下の通りNumpyの配列を作成して「dtype」でデータ型を確認します。
すると、以下の通り「int32」が返ってきます。
※Windows環境が前提となります。
ここで疑問を感じました。
『なぜデフォルトが int32(32bit)なのか?』
#■ OS環境のビット数に依存するのか? ⇒ NO
最初はOSのビット数に依存しているのかと考えました。
しかし私の環境は以下の通り64bitです。
OS環境のビット数には依存していません。
#■ Python環境のビット数に依存するのか? ⇒ NO
次にPython環境のビット数に依存しているのかと考えました。
sysモジュールのmaxsizeを利用してPython環境のビット数を調べます。
32bit : 2147483647
64bit : 9223372036854775807
結果は上記の通り「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言語におけるlong型の仕様』でした。