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ámetro | Qué hace |
|---|---|
axis | None: todo el arreglo. 0: baja por las filas y da un promedio por columna. 1: recorre las columnas y da un promedio por fila |
dtype | Tipo con que se acumula la suma. Para enteros NumPy ya usa float64; para float32 conviene pedir np.float64 |
keepdims | Si es True, conserva la dimensión reducida con tamaño 1, útil para restar el promedio a cada fila |
where | Má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
- Convierte tus datos a arreglo con
np.array(lista)(np.mean también acepta listas, pero así controlas el tipo). - Decide la dirección: todo el arreglo, por columna (
axis=0) o por fila (axis=1). - Llama a
np.meano al método.mean(). - 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
nanyRuntimeWarning: Mean of empty slice. El arreglo está vacío, a veces porque una máscara no seleccionó nada. NumPy no lanza excepción: revisaa.sizeantes.nansin advertencia. Hay algúnNaNen los datos. Usanp.nanmean; ver ignorar NaN.- Confundir
axis=0yaxis=1. Revisa la forma del resultado: si esperabas un valor por alumno y tienes uno por examen, cambia el eje. TypeError: mean() got an unexpected keyword argument 'weights'.np.meanno pondera; usanp.average.- Imprimir
np.float64(8.05)en vez de8.05. Desde NumPy 2.0, la representación dentro de listas y tuplas muestra el tipo.print(x)imprime solo el número;float(x)lo convierte afloatde Python.
En Excel, el equivalente de np.mean es PROMEDIO; tienes las variantes en el promedio en Excel.
Fuentes
- NumPy, numpy.mean. Parámetros axis, dtype, keepdims, where. Consultado el 11 de noviembre de 2026.