Numpyの整数配列にNaNを格納する方法はありますか? 私は得る。
a=np.array([1],dtype=long)
a[0]=np.nan
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
いいえ、少なくとも現在の NumPy のバージョンではできません。nan` は、float 配列のための特別な値で、 only です。
実際には nan
に相当する値を浮動小数点数でない配列に格納できるようにするための特別なビットを導入するという話もありますが、今のところ(2012/10)、話だけです。
一方、numpy.ma
パッケージを検討するとよいでしょう。-999999のような無効な整数を選ぶ代わりに、無効な値を表す特別な値 numpy.ma.masked
を使用することができるのです。
a = np.ma.array([1,2,3,4,5], dtype=int)
a[1] = np.ma.masked
masked_array(data = [1 -- 3 4 5],
mask = [False True False False False],
fill_value = 999999)