np.mean() vs np.average() en Python NumPy?

3 minutos de lectura

avatar de usuario
Sibbs juegos de azar

me doy cuenta de que

In [30]: np.mean([1, 2, 3])
Out[30]: 2.0

In [31]: np.average([1, 2, 3])
Out[31]: 2.0

Sin embargo, debe haber algunas diferencias, ya que al fin y al cabo son dos funciones diferentes.

Cuáles son las diferencias entre ellos?

  • En realidad, la documentación no lo aclara de inmediato, por lo que puedo ver. No digo que sea imposible saberlo, pero creo que esta pregunta es válida para Stack Overflow de todos modos.

    – BlackVegetal

    18 de noviembre de 2013 a las 17:47


  • numpy.mean : Devuelve el promedio de los elementos de la matriz.

    – joaquín

    18 de noviembre de 2013 a las 17:47

  • @joaquin: “Calcule la media aritmética a lo largo del eje especificado”. vs “Calcular el promedio ponderado a lo largo del eje especificado”?

    – Licuadora

    19 de noviembre de 2013 a las 0:01


  • @Blender a la derecha. Solo estaba tratando de hacer una especie de respuesta graciosa a tu comentario porque si sigo tus instrucciones lo primero que leo en el documentos para numpy.mean es numpy.mean : Devuelve el promedio de los elementos de la matriz lo cual es divertido si está buscando la respuesta a la pregunta OP.

    – joaquín

    19 de noviembre de 2013 a las 16:05

avatar de usuario
Martillo

np.average toma un parámetro de peso opcional. Si no se suministra son equivalentes. Echa un vistazo al código fuente: Significar, Promedio

np.media:

try:
    mean = a.mean
except AttributeError:
    return _wrapit(a, 'mean', axis, dtype, out)
return mean(axis, dtype, out)

np.promedio:

...
if weights is None :
    avg = a.mean(axis)
    scl = avg.dtype.type(a.size/avg.size)
else:
    #code that does weighted mean here

if returned: #returned is another optional argument
    scl = np.multiply(avg, 0) + scl
    return avg, scl
else:
    return avg
...

  • ¿Por qué ofrecen dos funciones diferentes? Parece que deberían ofrecer np.average ya que weights ya es opcional. Parece innecesario y solo sirve para confundir a los usuarios.

    – Geoff

    30 de noviembre de 2015 a las 22:03

  • @Geoff Preferiría que lanzaran una NotImplementedException para “promedio”, para educar a los usuarios de que la media aritmética no es idéntica al “promedio”.

    – FooBar

    26 de junio de 2018 a las 11:15

np.mean siempre calcula una media aritmética y tiene algunas opciones adicionales para la entrada y la salida (por ejemplo, qué tipos de datos usar, dónde colocar el resultado).

np.average puede calcular un promedio ponderado si el weights se proporciona el parámetro.

avatar de usuario
GM

En alguna versión de numpy hay otra diferencia importante que debes tener en cuenta:

average no tenga en cuenta las máscaras, calcule el promedio de todo el conjunto de datos.

mean tiene en cuenta las máscaras, por lo tanto, calcule la media solo sobre valores no enmascarados.

g = [1,2,3,55,66,77]
f = np.ma.masked_greater(g,5)

np.average(f)
Out: 34.0

np.mean(f)
Out: 2.0

  • Nota: np.ma.average obras. También, hay un informe de error.

    – Neil G.

    29 de marzo de 2017 a las 1:53


  • np.average y np.mean ambos tienen en cuenta las máscaras. Probé y obtuve el valor de “Fuera: 2.0

    – CEB

    30 de junio a las 14:40

  • @CEB la nueva versión probablemente solucione el error gracias por informar

    – GM

    30 de junio a las 16:42

En tu invocación, las dos funciones son las mismas.

average Sin embargo, puede calcular un promedio ponderado.

Enlaces de documentos: mean y average

  • Muy sorprendente. ¿Sabe por qué sucede esto y puede presentar un informe de error? Gracias

    – Sanjay Manohar

    22 de septiembre de 2020 a las 13:48

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad