如果数组中的值超过 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
.
如果你将一个位数较多的整数转换成一个位数较少的整数,高位就被截掉了(你可以说这几乎是......堆栈溢出?(顺便说一句)) .
考虑以下代码:
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
.
如果你将一个位数较多的整数转换成一个位数较少的整数,高位就被截掉了(你可以说这几乎是......堆栈溢出?(顺便说一句)) .