Indexación y slicing de arrays
Seleccione elementos individuales, filas, columnas y subarrays mediante notación de enteros y de slices en arrays multidimensionales.
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]) # 30Slicing 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 columnSlicing 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 2np.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] -- unchangedIndexació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 3Asignar 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 vectorComprobació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.
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
- Creación de arrays de NumPy
- Atributos e inspección de arrays
- Aritmética elemento a elemento
- Indexación y slicing de arrays