¿Cómo usar numpy con el valor ‘Ninguno’ en Python?

Me gustaría calcular la media de una matriz en Python de esta forma:

Matrice = [1, 2, None] 

Simplemente me gustaría que el valor numpy.mean ignorara mi valor de None , pero no puedo averiguar cómo hacerlo.

Estás buscando matrices enmascaradas . Aquí hay un ejemplo.

 import MA a = MA.array([1, 2, None], mask = [0, 0, 1]) print "average =", MA.average(a) 

Desafortunadamente, los arrays enmascarados no son totalmente compatibles con el numpy, así que tienes que mirar alrededor para ver qué se puede y qué no se puede hacer con ellos.

Puedes usar scipy para eso:

 import scipy.stats.stats as st m=st.nanmean(vec) 

no ha usado numpy, pero en Python estándar puede filtrar None usando la lista de comprensión o la función de filtro

 >>> [i for i in [1, 2, None] if i != None] [1, 2] >>> filter(lambda x: x != None, [1, 2, None]) [1, 2] 

y luego promediar el resultado para ignorar el None

También puede ser capaz de manejar valores como NaN o 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 realidad, puede que ni siquiera sea un embrollo. Wikipedia dice :

Los NaN se pueden usar para representar valores perdidos en los cálculos.

En realidad, esto no funciona para la función mean (), sin embargo, así que no te preocupes. 🙂

 In [20]: mean([1, 2, NaN]) Out[20]: nan 

También puede usar el filtro, pasarle Ninguno, filtrará los objetos no verdaderos, también 0,: D Por lo tanto, utilícelo cuando no necesite 0 también.

 >>> filter(None,[1, 2, None]) [1, 2] 

np.mean (Matrice [Matrice! = Ninguno])