4

整数型が保持できる最大値よりも高い最大値を持つ配列がある場合、配列を float dtype から integer dtype に変換するときに、numpy はどのように値をスケーリングしますか?

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 の倍率に到達したのですか?

助けてくれてありがとう。

4

2 に答える 2

3

それらは配列の同じ要素ではありません。

Numpy は、int に変換してからバイナリ表現を切り捨てることにより、浮動小数点型から整数型に変換します。そのため、32767.0 は整数 32767 (0x7fff) に変換され、次に int8 では -1 である 0xff に変換されます。

127 は、整数値が 127 modulo 256 に合同である別の配列要素から来ています。

于 2013-10-24T17:37:13.877 に答える