如果你的数组的最大值高于整数类型可以容纳的数组,那么当你将数组从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的比例系数?
感谢您的帮助。
答案 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