古いバージョンの python (2.4?) を使用してサーバー上で実行する必要があるコードを numpy ではなく Numeric で書いていますが、それについては何もできません。コードをテストするには、numpy.oldnumeric で実行します
float32 の配列から始めて、それらに値を格納します。私の値は 1.0e50-1.0e60 の範囲にあり、配列はそれらを「inf」として保存し続けます。1.0e39 をキャストしても、「inf」につながります。float は 1.0e108 に近づくと最大になるはずではありませんか?! これらの値を保持するにはどうすればよいですか?
....
import numpy.oldnumeric as N
data = N.zeros(10, 'f')
....
for i in range(10): data[i] = (1.0e38)*pow(10.0,i)
print data[i]
与える
[ 9.99999993e+36 9.99999968e+37 inf inf
inf inf inf inf
inf inf]
解決策: 単精度浮動小数点数 (float32) の制限は思ったよりも小さいです (~3e38)。@aka.nice に感謝します。そのため、'f' (float32) から十分な容量を持つ 'dtype=N.float64' に切り替えました。 .