Apakah ada cara untuk menyimpan NaN dalam larik bilangan bulat Numpy? Saya mendapatkannya:
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
Tidak, Anda tidak bisa, setidaknya dengan versi NumPy saat ini. Sebuah nan
adalah nilai khusus untuk array float hanya.
Ada pembicaraan tentang memperkenalkan bit khusus yang akan memungkinkan array non-float untuk menyimpan apa yang dalam praktiknya akan sesuai dengan nan
, tetapi sejauh ini (2012/10), itu hanya pembicaraan.
Sementara itu, Anda mungkin ingin mempertimbangkan paket numpy.ma
: alih-alih memilih bilangan bulat yang tidak valid seperti -99999, Anda dapat menggunakan nilai numpy.ma.masked
khusus untuk mewakili nilai yang tidak valid.
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)