np.mean en NumPy

Por el equipo de promedio.net · Actualizado el

np.mean(arreglo) devuelve el promedio de todos los elementos de un arreglo de NumPy. Con axis=0 calcula el promedio de cada columna y con axis=1 el de cada fila. El resultado es un numpy.float64 (o un arreglo de ellos), que se comporta como un número normal; conviértelo con float() si lo vas a guardar en JSON.

Sintaxis

import numpy as np

np.mean(a, axis=None, dtype=None, keepdims=False, where=True)
a.mean(axis=None)   # método equivalente
ParámetroQué hace
axisNone: todo el arreglo. 0: baja por las filas y da un promedio por columna. 1: recorre las columnas y da un promedio por fila
dtypeTipo con que se acumula la suma. Para enteros NumPy ya usa float64; para float32 conviene pedir np.float64
keepdimsSi es True, conserva la dimensión reducida con tamaño 1, útil para restar el promedio a cada fila
whereMáscara booleana: solo promedia los elementos donde vale True

np.mean no tiene parámetro de pesos. Para un promedio ponderado usa np.average(a, weights=w), explicado en promedio ponderado en Python.

Paso a paso

  1. Convierte tus datos a arreglo con np.array(lista) (np.mean también acepta listas, pero así controlas el tipo).
  2. Decide la dirección: todo el arreglo, por columna (axis=0) o por fila (axis=1).
  3. Llama a np.mean o al método .mean().
  4. Redondea para mostrar con .round(2); no antes de calcular.

Ejemplos resueltos

Ejemplo 1: arreglo de una dimensión

import numpy as np

a = np.array([12.5, 9.0, 14.25, 11.0])
print(np.mean(a), a.mean())
11.6875 11.6875

La función y el método dan lo mismo. Usa la que te resulte más legible.

Ejemplo 2: calificaciones de 4 alumnos en 3 exámenes

Cada fila es un alumno y cada columna un examen:

m = np.array([[8, 9, 7],
              [6, 10, 9],
              [9, 8, 10],
              [7, 7, 8]])
print(m.mean())
print(m.mean(axis=0))
print(m.mean(axis=1).round(2))
8.166666666666666
[7.5 8.5 8.5]
[8.   8.33 9.   7.33]

El promedio general es 8.17. axis=0 colapsa las filas y deja un promedio por examen: el primero fue el más difícil (7.5). axis=1 colapsa las columnas y deja un promedio por alumno: el tercero tiene 9. Una forma de recordarlo: el número de axis es la dimensión que desaparece.

Ejemplo 3: restar a cada alumno su propio promedio

Para ver qué examen le fue mejor a cada alumno respecto de sí mismo, necesitas que el promedio por fila conserve su forma de columna:

p = m.mean(axis=1, keepdims=True)
print(p)
[[8.        ]
 [8.33333333]
 [9.        ]
 [7.33333333]]

Con forma (4, 1), m - p resta a cada fila su propio promedio por difusión (broadcasting). Sin keepdims, el resultado tendría forma (4,) y la resta se alinearía con las columnas, dando un error de forma o un resultado equivocado.

Precisión y tipo de dato

Con enteros no hay riesgo: aunque el arreglo sea uint8, NumPy acumula en float64, y np.array([200, 100, 50], dtype=np.uint8).mean() devuelve 116.66666666666667. Con float32 sí puede haber problemas:

y = np.array([3e38, 3e38], dtype=np.float32)
print(y.mean(), y.mean(dtype=np.float64))
inf 3.0000000054977558e+38

La suma intermedia supera el máximo de float32 y se vuelve infinita, con una advertencia RuntimeWarning: overflow encountered in reduce. Pedir dtype=np.float64 lo resuelve. El valor no es exactamente 3e38 porque float32 no puede representarlo.

Errores comunes

En Excel, el equivalente de np.mean es PROMEDIO; tienes las variantes en el promedio en Excel.

Fuentes

  1. NumPy, numpy.mean. Parámetros axis, dtype, keepdims, where. Consultado el 11 de noviembre de 2026.