我可以强制numpy数组保持其uint32类型吗?
我想在Python中模拟C语言的行为,可能是用numpy来实现,但我遇到了一个问题:
>>> import numpy
>>> a = numpy.uint32(4294967295)
>>> type(a)
<class 'numpy.uint32'>
>>> a += 1
>>> a
4294967296
>>> type(a)
<class 'numpy.int64'>
在C语言中,使用uint32类型时,我会得到 4294967295 + 1 = 0
我能否强制我的数组a保持为 numpy.uint32
类型,以便在我的脚本结束时得到 0
呢?
这和我另一个问题有关: numpy是否完全复制了C语言在常见操作上的所有行为?
1 个回答
2
你这里没有使用数组,这一点很重要,因为NumPy在处理单个数字(标量)和大小为1的数组时,行为可能不一样。
举个例子,对数组进行原地操作时,数组的数据类型(dtype)是不会改变的。
示例:
import numpy
a = numpy.array([4294967295], dtype='uint32')
a += 1
print(a)
print(a.dtype)
输出:
[0]
uint32