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.

22
demandé sur Alex Riley 2009-06-07 21:21:44

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.

10
répondu tom10 2015-08-05 22:21:12

Vous pouvez utiliser scipy pour cela:

import scipy.stats.stats as st
m=st.nanmean(vec)
6
répondu Noam Peled 2011-11-22 22:15:38

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

3
répondu cobbal 2009-06-07 17:28:06

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
3
répondu endolith 2011-06-16 16:07:41

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]
2
répondu YOU 2009-12-06 02:30:31

Np.moyenne (Matrice [Matrice != Aucun])

0
répondu Ishan Tomar 2018-06-06 19:30:01