我从 numpydoc 中看到了这个例子:
np.promote_types('i4', 'S8')
dtype('S11')
基本上,我无法理解以下内容:
i4 占用 4 个字节,S8 占用 8 个字节。那么,就内存而言,为什么我需要 S11 来容纳这两种类型呢?我本来期待S8的结果。
我从 numpydoc 中看到了这个例子:
np.promote_types('i4', 'S8')
dtype('S11')
基本上,我无法理解以下内容:
i4 占用 4 个字节,S8 占用 8 个字节。那么,就内存而言,为什么我需要 S11 来容纳这两种类型呢?我本来期待S8的结果。
S8是一个字符串。因此,在选择数据类型来容纳 i4 和 S8 时要考虑的相关情况是将 i4 中可能的最长数字表示为字符串。
要将 -2,147,483,648 表示为字符串,您需要 11 个字符。这就是为什么你得到 S11 作为结果。
“查看”与“i4”和“S8”相同的位模式的示例是:
4*4=16个数据缓冲区可以看作两个“S8”
当我们尝试从整数数组和字符串一创建一个新数组(例如连接)时,就会发生强制转换/类型提升:
或者使用默认的 unicode 字符串格式: