59

NaNを整数のNumpy配列に格納する方法はありますか?私は得る:

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
4

2 に答える 2

53

いいえ、少なくとも現在のバージョンのNumPyではできません。Ananは、float配列専用の特別な値です。

非フロート配列が実際にに対応するものを格納できるようにする特別なビットを導入することについての話がありますがnan、これまでのところ(2012/10)、それは話だけです。

それまでの間、パッケージを検討することをお勧めしnumpy.maます。-99999のような無効な整数を選択する代わりに、特別な値を使用し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)
于 2012-10-03T20:22:05.790 に答える
11

nanは浮動小数点のみのものであり、整数で表現されていないため、:)

-99999などの無効な値を選択してください

于 2012-10-03T12:47:52.143 に答える