问题描述
考虑以下代码:
test = np.ones((200,200))
test = test*20000
test_int8 = test.astype(np.int8)
当我实现这一点时,我发现 test_int8
填充了 32,为什么?一般来说,如果有一个数组的值超过了我要转换为接受的 dtype 的最大值,python 将如何处理?
解决方法
20000
在 32 位二进制中是 0000 0000 0000 0000 0100 1110 0010 0000
。
如您所见,最后八位是0010 0000
,即32
。
如果您将具有较高位数的 int 转换为较低位数,则最高位将被切断(您可以说它几乎是......堆栈溢出?(顺便说一下))。