Existe-t-il un moyen de stocker NaN dans un tableau Numpy d'entiers? Je reçois:
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
Non, vous ne pouvez pas, du moins avec la version actuelle de NumPy. Un nan
est une valeur spéciale pour les tableaux flottants uniquement .
Il y a des discussions sur l'introduction d'un bit spécial qui permettrait aux tableaux non flottants de stocker ce qui correspondrait en pratique à un nan
, mais jusqu'à présent (2012/10), ce ne sont que des discussions.
En attendant, vous voudrez peut-être considérer les numpy.ma
package: au lieu de choisir un entier non valide comme -99999, vous pouvez utiliser le spécial numpy.ma.masked
valeur pour représenter une valeur non valide.
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)
Un nan n'est qu'une chose en virgule flottante, il n'y a aucune représentation de celui-ci dans les entiers, donc non :)
Choisissez une valeur non valide, comme -99999