I am confused with the difference between integer types.
For example, here is a numpy.array with dtype of np.int.
>>> arr_ = np.array([1,2], dtype = np.int)
Through the below code, it represents true that int is the same as np.int:
>>> int is np.int
Out[1]: True
However, when I select the first value of the array which is created with dtype of np.int, the below code outputs false.
>>> type(arr_[0]) is int
Out[2]: False
Why does the code output false, not true?
It seems like that dtype = np.int dose not applied on the arr_.
Why np.int dose not applied as a dtype on the array?
I've looked into this, but couldn't get what I need.
CodePudding user response:
In Python the types int, np.int32 and np.int64 are 3 different types:
intis the native Python multiprecision integer type able to represent any integer value (the only limit being available memory). For example2**128is a validintvaluenp.int32in theint32_tC integer type that can represent values using up to 32 bits, that is values between -2147483648 and 2147483647np.int64is theint64_tC integer type that can represent values using up to 64 bits, that is values between -9223372036854775808 and 9223372036854775807
And np.int is a (deprecated alias) for the native Python int type, the reason why int is np.int is true. But numpy integer arrays even with dtype=int receive an actual type of np.int32 or np.int64 because they have to be processed by C code so they have to by coerced to a fixed size integer type. If you really need to store true int values, you will have to use dtype=object but operations will no longer be vectorizable.
