我对整数类型之间的区别感到困惑。
例如,这里是一个带有dtype numpy.array
的np.int
。
>>> arr_ = np.array([1,2], dtype = np.int)
通过下面的代码,它表示真,即int
与np.int
相同
>>> int is np.int
Out[1]: True
但是,当我选择使用np.int
的dtype创建的数组的第一个值时,下面的代码输出false。
>>> type(arr_[0]) is int
Out[2]: False
为什么代码输出false而不是true?
dtype = np.int
似乎不适用于arr_
。
为什么np.int
不作为数组上的dtype应用?
我调查过this,但没有得到我需要的东西。
发布于 2021-10-08 07:46:45
在Python中,类型int
、np.int32
和np.int64
有3种不同的类型:
int
是本机PythonMulti精度整数类型,能够表示任何整数值(唯一的限制是可用内存)。例如,valuenp.int32
是一个有效的int32_t
C整数类型,它可以表示使用最多32位的值,即-2147483648之间的值,而2147483647np.int64
是int64_t
C整数类型,它可以表示最多消耗64位的值,即-9223372036854775808和9223372036854775807之间的值。
np.int
是本机Python int
类型的一个(不推荐的别名),这是int is np.int
为true的原因。但是,numpy整数数组,即使使用dtype=int
,也会接收实际类型的np.int32
或np.int64
,因为它们必须由C代码处理,所以必须强制使用固定大小的整数类型。如果确实需要存储真正的int
值,则必须使用dtype=object
,但操作将不再是可向量化的。
https://stackoverflow.com/questions/69491672
复制相似问题