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

问题描述

考虑以下代码

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 转换为较低位数,则最高位将被切断(您可以说它几乎是......堆栈溢出?(顺便说一下))。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...