【Python】Numpy에서의 dtype 「int32」의 이유(Windows 환경)(2020년 9월 시점)

내가 Numpy의 공부를 할 때 신경이 쓰인 적이 있습니다.
예를 들어 다음과 같이 Numpy 배열을 만들고 'dtype'에서 데이터 형식을 확인합니다.
그러면 다음과 같이 "int32"가 반환됩니다.
※Windows 환경이 전제가 됩니다.



여기서 의문을 느꼈습니다.

왜 기본값이 int32(32bit)인가? 』

■ OS 환경의 비트 수에 의존합니까? ⇒⇒ NO



처음에는 OS의 비트 수에 의존하고 있는지 생각했습니다.
그러나 내 환경은 다음과 같이 64bit입니다.
OS 환경의 비트 수에 의존하지 않습니다.



■ Python 환경의 비트 수에 의존합니까? ⇒⇒ NO



다음으로 파이썬 환경의 비트 수에 의존하는지 생각했습니다.
sys 모듈의 maxsize를 사용하여 Python 환경의 비트 수를 확인합니다.

32bit: 2147483647
64bit:9223372036854775807



결과는 상기와 같이 「9223372036854775807」이므로, Python 환경은 「64bit」가 됩니다.
파이썬 환경의 비트 수에 의존하지 않습니다.

■ 결론 ⇒ 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형의 사양」이었습니다.

좋은 웹페이지 즐겨찾기