Numpy的dtype转换算法

时间:2013-10-24 17:26:28

标签: python numpy type-conversion

如果你的数组的最大值高于整数类型可以容纳的数组,那么当你将数组从float dtype转换为整数dtype时numpy scale值是多少?

In [9]: data_array.dtype
Out[9]: dtype('<f4')

In [11]: data_array.max()
Out[11]: 32767.0

In [16]: test = np.asarray(data_array, dtype=np.int8)

In [17]: test.max()
Out[17]: 127

In [18]: data_array.max()/test.max()
Out[18]: 258.00787

numpy如何达到258的比例系数?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

它们与数组的元素不同。

Numpy通过转换为int然后截断二进制表示从浮动转换为整数类型,因此32767.0将转换为整数32767(0x7fff),然后转换为0xff,在int8中为-1。

127来自另一个数组元素,其整数值与127模256一致。

答案 1 :(得分:2)

它不是一个比例......它只是使用8位作为有符号整数......

32767&amp; 0b11111111 = 0b11111111 = 255(无符号)

int 8是有符号的,因此只有7位,第8位是符号位

0b01111111 = 127