在我的Windows计算机上:
>>> import numpy as np
>>> np.dtype(np.uint32).itemsize
4
>>> np.dtype(np.uintc).itemsize
4
>>> np.uint32 == np.uintc
False
在Mac上:
>>> import numpy as np
>>> np.dtype(np.uint32).itemsize
4
>>> np.dtype(np.uintc).itemsize
4
>>> np.uint32 == np.uintc
True
为什么np.uint32 != np.uintc
在Windows上尽管相同的itemsize?
1条答案
按热度按时间b09cbbtk1#
NumPy用户通常认为是4级整数dtype层次结构,即int8,int16,int32,int64和无符号变体,但在内部,NumPy实际上具有 5 级层次结构。
这个5级层次结构对应于有符号和无符号的C char,short,int,long和long long。根据您的平台,
long
通常与int
或long long
大小相同,导致int32或int64的“邪恶孪生”数据类型。numpy.uintc
是对应于Cunsigned int
的dtype,在Mac上,这是唯一的32位无符号整数类型,因此numpy.uint32
是numpy.uintc
的别名。然而,在Windows上,unsigned long
也是32位无符号整数类型,因此numpy.uint32
可以是numpy.uintc
或numpy.uint
,即对应于Cunsigned long
的dtype。它最终是numpy.uint
而不是numpy.uintc
。