Pandas & NumPy Academy · Lección

Indexación y slicing de arrays

Seleccione elementos individuales, filas, columnas y subarrays mediante notación de enteros y de slices en arrays multidimensionales.

Lección 4 de 413 pasos

Indexación y slicing de arrays es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

Indexación con enteros en arrays 1D

Un array 1D se indexa igual que una lista: a[0] es el primero y a[-1] es el último. La indexación devuelve un único escalar y los números negativos cuentan desde el final.

import numpy as np

a = np.array([10, 20, 30, 40, 50])
print(a[0])    # 10
print(a[-1])   # 50
print(a[2])    # 30

Slicing de arrays 1D

Los slices usan start:stop:step, como las listas, pero un slice de NumPy devuelve una view, sin realizar una copia. Si modifica el slice, modificará el original; use .copy() cuando sea necesario.

import numpy as np

a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
print(a[2:7])      # [2 3 4 5 6]
print(a[::2])      # [0 2 4 6 8]
print(a[::-1])     # [9 8 7 6 5 4 3 2 1 0]

Indexación de arrays 2D

Para los arrays 2D, use la sintaxis con coma: a[row, col]. Dos puntos sin más indican todo el eje correspondiente, de modo que a[0, :] obtiene una fila completa y a[:, 1], una columna completa.

import numpy as np

m = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

print(m[1, 2])     # 6  (row 1, col 2)
print(m[0, :])     # [1 2 3]  first row
print(m[:, 1])     # [2 5 8]  second column

Slicing de arrays 2D

Indique dos slices para obtener un bloque rectangular: a[0:2, 1:3] selecciona esas filas y columnas. El resultado es una view, por lo que las modificaciones se reflejan en el original.

import numpy as np

m = np.arange(16).reshape(4, 4)
print(m)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]

print(m[1:3, 1:3])
# [[ 5  6]
#  [ 9 10]]

Indexación booleana

Pase un array booleano para conservar únicamente los elementos marcados como True. Esta indexación booleana siempre devuelve una copia y es la forma estándar de filtrar datos.

import numpy as np

a = np.array([3, 7, 2, 9, 1, 6])
mask = a > 4
print(mask)     # [False  True False  True False  True]
print(a[mask])  # [7 9 6]

# Equivalent one-liner
print(a[a > 4])  # [7 9 6]

Indexación avanzada con arrays de enteros

La indexación avanzada permite seleccionar elementos en cualquier posición mediante una lista de enteros, en cualquier orden e incluso repitiéndolos. Siempre devuelve una copia.

import numpy as np

a = np.array([10, 20, 30, 40, 50])
idx = [4, 1, 3]
print(a[idx])    # [50 20 40]

# Selecting specific rows from a 2D array
m = np.arange(20).reshape(4, 5)
print(m[[0, 2], :])  # rows 0 and 2

np.where para la selección condicional

np.where(condition, x, y) selecciona valores de x cuando la condición es True y de y cuando es False; es una forma rápida de elegir valores por elemento sin bucles.

import numpy as np

a = np.array([5, -3, 8, -1, 2])
result = np.where(a > 0, a, 0)  # keep positives, zero negatives
print(result)  # [5 0 8 0 2]

# np.where with one argument returns indices of True elements
idx = np.where(a > 0)
print(idx)     # (array([0, 2, 4]),)

Los slices son vistas: ¡atención!

Atención: como los slices son views, modificar uno también modifica el array original. ¿Necesita una parte independiente? Llame primero a .copy() sobre el slice. ⚠️

import numpy as np

original = np.arange(6)
view = original[2:5]   # view, not copy
view[:] = 99
print(original)  # [ 0  1 99 99 99  5]  -- original changed!

safe = original[2:5].copy()  # true copy
safe[:] = 0
print(original)  # [ 0  1 99 99 99  5]  -- unchanged

Indexación de arrays 3D

Los arrays pueden tener cualquier número de dimensiones. Para un array 3D, se indexa con tres posiciones: a[depth, row, col], algo habitual al trabajar con lotes de imágenes.

import numpy as np

t = np.arange(24).reshape(2, 3, 4)
print(t.shape)       # (2, 3, 4)
print(t[0, :, :])    # first 'plane' -- shape (3, 4)
print(t[1, 2, 3])    # scalar at depth 1, row 2, col 3

Asignar valores mediante indexación

Cualquier forma de indexación puede utilizarse a la izquierda de un = para cambiar valores in-place: slices, máscaras o índices avanzados. Asigne un escalar y NumPy lo distribuirá en todas las posiciones.

import numpy as np

a = np.zeros(8)
a[2:5] = 1.0          # slice assignment
print(a)  # [0. 0. 1. 1. 1. 0. 0. 0.]

a[a == 0] = -1.0      # boolean assignment
print(a)  # [-1. -1.  1.  1.  1. -1. -1. -1.]

Ellipsis y np.newaxis

np.newaxis (o None) añade un eje de tamaño 1 y convierte un array (5,) en un vector columna (5, 1), una preparación habitual antes de aplicar broadcasting.

import numpy as np

t = np.ones((2, 3, 4))
print(t[..., 0].shape)   # (2, 3) -- last axis fixed at 0

a = np.array([1, 2, 3])
print(a.shape)                 # (3,)
print(a[:, np.newaxis].shape)  # (3, 1) column vector

Comprobación rápida

Compruebe sus conocimientos sobre slicing e indexación de arrays de NumPy en esta lección.

Resumen de la lección

¡Bien hecho! Los slices son views que comparten memoria, la indexación booleana filtra y copia, y la indexación avanzada obtiene cualquier elemento que indique. A continuación: las funciones universales.

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Indexación y slicing de arrays» es gratis?

Sí — el texto completo de «Indexación y slicing de arrays» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Indexación y slicing de arrays»?

Seleccione elementos individuales, filas, columnas y subarrays mediante notación de enteros y de slices en arrays multidimensionales. Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Pandas & NumPy Academy?

No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Indexación y slicing de arrays»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?

Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Creación de arrays de NumPy
  2. Atributos e inspección de arrays
  3. Aritmética elemento a elemento
  4. Indexación y slicing de arrays
← Volver a Pandas & NumPy Academy