Comment utiliser numpy avec la valeur 'None' en Python?
Je voudrais calculer la moyenne d'un tableau en Python sous cette forme:
Matrice = [1, 2, None]
J'aimerais juste que ma valeur None
soit ignorée par le calcul numpy.mean
mais je n'arrive pas à comprendre comment le faire.
6 réponses
Vous recherchez tableaux masqués . Voici un exemple.
import MA
a = MA.array([1, 2, None], mask = [0, 0, 1])
print "average =", MA.average(a)
Malheureusement, les tableaux masqués ne sont pas complètement pris en charge dans numpy, vous devez donc regarder autour de vous pour voir ce qui peut et ne peut pas être fait avec eux.
Vous pouvez utiliser scipy pour cela:
import scipy.stats.stats as st
m=st.nanmean(vec)
N'a pas utilisé numpy, mais en Python standard, vous pouvez filtrer None
en utilisant des compréhensions de liste
ou de la fonction de filtre
>>> [i for i in [1, 2, None] if i != None]
[1, 2]
>>> filter(lambda x: x != None, [1, 2, None])
[1, 2]
Puis faire la moyenne du résultat pour ignorer le None
Vous pourriez également être en mesure de kludge avec des valeurs comme NaN ou Inf.
In [1]: array([1, 2, None])
Out[1]: array([1, 2, None], dtype=object)
In [2]: array([1, 2, NaN])
Out[2]: array([ 1., 2., NaN])
En fait, ce n'est peut-être même pas un kludge. Wikipedia dit: :
Les Nan peuvent être utilisés pour représenter les valeurs manquantes dans les calculs.
En fait, cela ne fonctionne pas pour la fonction mean (), donc peu importe. :)
In [20]: mean([1, 2, NaN])
Out[20]: nan
Vous pouvez également utiliser le filtre, lui passer Aucun, il filtrera les objets non vrais, aussi 0,: D Alors, utilisez-le quand vous n'avez pas besoin de 0 aussi.
>>> filter(None,[1, 2, None])
[1, 2]