Módulo 2 · Datos
Arreglos y ejes
En esta páginaEl problema
El problema
Tienes tres observaciones evaluadas con la misma escala de 0 a 100 en razonamiento, precisión y consistencia:
| observación | razonamiento | precisión | consistencia |
|---|---|---|---|
| O-01 | 70 | 80 | 90 |
| O-02 | 60 | 75 | 85 |
| O-03 | 90 | 95 | 100 |
Necesitas describir la estructura, extraer una observación y una característica, aplicar una corrección declarada y obtener dos resúmenes. El objetivo es producir una nota breve que diga qué representa cada eje y qué entidades permanecen después de cada operación.
Atributos del arreglo
Cada fila describe una observación y cada columna conserva una característica comparable. Por eso el eje 0 representa observaciones y el eje 1 representa características. El problema determina ese significado. NumPy solo registra longitudes y valores.
Un ndarray suele ser homogéneo: sus elementos comparten un tipo de datos. Aquí fijamos float64 para que la representación sea explícita.
Pregunta. Antes de procesar la celda, escribe cuatro respuestas: número de ejes, forma, cantidad de elementos y tipo.
import numpy as np
puntajes = np.array(
[
[70, 80, 90],
[60, 75, 85],
[90, 95, 100],
],
dtype=np.float64,
)
print(puntajes.ndim)
print(puntajes.shape)
print(puntajes.size)
print(puntajes.dtype)
La salida esperada está oculta.
Selección por fila y por columna
puntajes[1, :] selecciona la fila de O-02. puntajes[:, 2] selecciona la tercera columna en todas las filas.
Pregunta. Escribe los valores esperados. Después, completa dos frases: “el primer resultado conserva ___” y “el segundo resultado conserva ___”. Predice también la forma de ambos.
observacion_2 = puntajes[1, :]
caracteristica_3 = puntajes[:, 2]
print(observacion_2)
print(observacion_2.shape)
print(caracteristica_3)
print(caracteristica_3.shape)
La salida esperada está oculta.
Broadcasting acotado
Supón que una revisión del instrumento declara correcciones de 0, +5 y -5 puntos para razonamiento, precisión y consistencia. Las tres cantidades usan la misma unidad que los puntajes. Este es un caso acotado de broadcasting.
Pregunta. La corrección tiene forma (3,). Decide si corresponde a filas o columnas, predice la forma de ajustados y calcula mentalmente la segunda fila.
correccion = np.array([0, 5, -5], dtype=np.float64)
ajustados = puntajes + correccion
print(ajustados)
print(ajustados.shape)
La salida esperada está oculta.
Reducciones por eje
Para comparar observaciones y características seguimos usando el arreglo original puntajes. Una reducción elimina el eje indicado.
Pregunta. Antes de procesar, completa dos frases. “Si desaparecen las observaciones, quedan ___ valores que representan ___”. “Si desaparecen las características, quedan ___ valores que representan ___”.
promedio_por_caracteristica = puntajes.mean(axis=0)
promedio_por_observacion = puntajes.mean(axis=1)
print(np.round(promedio_por_caracteristica, 1))
print(np.round(promedio_por_observacion, 1))
print(promedio_por_caracteristica.shape)
print(promedio_por_observacion.shape)
La salida esperada está oculta.
Qué queda después de reducir un eje
Compara la forma original con axis=0 y axis=1. Antes de cambiar de estado, predice qué entidades permanecerán. El color no contiene información necesaria.
| Observación | Característica 1 | Característica 2 | Característica 3 |
|---|---|---|---|
| O-01 | 70 | 80 | 90 |
| O-02 | 60 | 75 | 85 |
| O-03 | 90 | 95 | 100 |
- Operación
puntajes.shape- Salida
- (3, 3)
- Qué significa
- 3 observaciones por 3 características.
Forma. Operación: puntajes.shape. Salida: (3, 3). Significado: 3 observaciones por 3 características.
Práctica
Traza guiada
Para el siguiente arreglo, escribe antes de procesar: ndim, shape, size, la forma de datos[:, 1] y, si las filas fueran estudiantes y las columnas materias, qué entidad conservaría esa selección.
datos = np.array(
[
[2.0, 4.0, 6.0, 8.0],
[1.0, 3.0, 5.0, 7.0],
]
)
Comprueba con atributos y una selección. Si una predicción falla, revisa qué representa cada eje y usa la forma correcta para explicar o corregir el resultado.
Suma comprobada
Suma np.array([10.0, 0.0, -10.0, 5.0]) a datos. Antes de procesar, predice la forma y dos valores concretos. Después verifica con assert la forma de datos y la del resultado nuevo. Explica por qué el vector corresponde al eje de cuatro características.
Variación propia
Construye un arreglo de cuatro observaciones por tres características. Produce una nota local que incluya:
- el significado de ambos ejes
- la forma original
- una columna seleccionada y lo que representa
mean(axis=0)ymean(axis=1)con la entidad que conserva cada resultadoassertpara las tres formas esperadas
Reto opcional
Añade un vector de tres correcciones y justifica su compatibilidad antes de sumarlo.
Errores que revisar
- Si confundes
(3,)con(1, 3), compruebandimademás de mirar los valores. - Si describes
axiscomo “vertical” u “horizontal”, identifica las entidades que desaparecen. Después, identifica las entidades que permanecen. - Si NumPy produce
ValueError, compara la longitud del vector con el eje de características antes de cambiar valores. - Si el cálculo funciona pero no puedes explicarlo, documenta los nombres, el orden y las unidades. La forma no contiene esa información.
Cierre
Explica por qué dos arreglos con forma (3,) pueden responder preguntas diferentes.
Lista de comprobación
- ¿Nombraste ambos ejes antes de calcular?
- ¿Dijiste qué entidad conserva cada resultado
(3,)? - ¿Separaste la compatibilidad de forma y la correspondencia de significado y unidad?
Documentación oficial
- NumPy: fundamentos para principiantes: atributos, creación, indexación y operaciones básicas.
- NumPy quickstart: arreglos homogéneos, ejes y reducciones.
- Broadcasting de NumPy: reglas de compatibilidad de formas.
Los ejemplos de esta página se verifican localmente con NumPy 2.4.x.