如果数组中的值超过 int8,numpy 会做什么

what does numpy if the value in an array exceeds int8

考虑以下代码:

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.

如果你将一个位数较多的整数转换成一个位数较少的整数,高位就被截掉了(你可以说这几乎是......堆栈溢出?(顺便说一句)) .