Módulo 2 · Datos

Lección 1 de 6

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ónrazonamientoprecisiónconsistencia
O-01708090
O-02607585
O-039095100

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.

Python 3 · ejemplo reproducible
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)
Salida esperada

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.

Python 3 · ejemplo reproducible
observacion_2 = puntajes[1, :]
caracteristica_3 = puntajes[:, 2]

print(observacion_2)
print(observacion_2.shape)
print(caracteristica_3)
print(caracteristica_3.shape)
Salida esperada

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.

Python 3 · ejemplo reproducible
correccion = np.array([0, 5, -5], dtype=np.float64)
ajustados = puntajes + correccion

print(ajustados)
print(ajustados.shape)
Salida esperada

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 ___”.

Python 3 · ejemplo reproducible
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)
Salida esperada

La salida esperada está oculta.

Mesa de prueba

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.

Arreglo de ejemplo: filas como observaciones y columnas como características
ObservaciónCaracterística 1Característica 2Característica 3
O-01708090
O-02607585
O-039095100
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.

Un arreglo tiene forma (4, 3): cuatro observaciones y tres características. ¿Qué forma tendrá datos.mean(axis=0)?

Puedes responder o seguir leyendo.

Selecciona una respuesta

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.

Python 3 · ejemplo reproducible
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:

  1. el significado de ambos ejes
  2. la forma original
  3. una columna seleccionada y lo que representa
  4. mean(axis=0) y mean(axis=1) con la entidad que conserva cada resultado
  5. assert para 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), comprueba ndim además de mirar los valores.
  • Si describes axis como “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

Los ejemplos de esta página se verifican localmente con NumPy 2.4.x.

Cargando progreso…