numpy np.uint32!= Windows上的np.uintc

nmpmafwu  于 2023-05-07  发布在  Windows
关注(0)|答案(1)|浏览(161)

在我的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?

b09cbbtk

b09cbbtk1#

NumPy用户通常认为是4级整数dtype层次结构,即int8,int16,int32,int64和无符号变体,但在内部,NumPy实际上具有 5 级层次结构。
这个5级层次结构对应于有符号和无符号的C char,short,int,long和long long。根据您的平台,long通常与intlong long大小相同,导致int32或int64的“邪恶孪生”数据类型。
numpy.uintc是对应于C unsigned int的dtype,在Mac上,这是唯一的32位无符号整数类型,因此numpy.uint32numpy.uintc的别名。然而,在Windows上,unsigned long也是32位无符号整数类型,因此numpy.uint32可以是numpy.uintcnumpy.uint,即对应于C unsigned long的dtype。它最终是numpy.uint而不是numpy.uintc

相关问题