Saltar al contenido

Trabajando con los arreglos de Numpy: Indexación y corte

Cortando un conjunto unidimensional

Para recuperar un solo valor, se utiliza la indexación. De manera similar, para recuperar una colección de valores, se usaría el rebanado. Por ejemplo, permítanme definir una matriz unidimensional

12array1 = np.arange(9)array1

pitón

Trabajando con los arreglos de Numpy: Indexación y corte
Trabajando con los arreglos de Numpy: Indexación y corte

Salida:

1array([0,1,2,3,4,5,6,7,8])

pitón

Esta es la sintaxis para cortar la matriz:

1array1[3:6]

pitón

Salida:

1array([3,4,5])

pitón

El índice «3» representa el elemento inicial de la rebanada y es inclusivo. El índice «6» representa el elemento de parada de la rebanada y es exclusivo. Esa es la razón por la que no obtuvimos el valor «6» en la salida.

Si no especificas el índice de inicio y el de parada, obtendrás todos los valores.

1array1[:]

pitón

Salida:

1array([0,1,2,3,4,5,6,7,8])

pitón

Eso es porque si faltan los índices, por defecto, Numpy inserta los índices de inicio y parada que seleccionan todo el conjunto. Así que escribir array1[:] es equivalente a escribir array1[0:9]

Puede ampliar este concepto para incluir sólo el índice inicial. En este caso, la rebanada incluye todos los elementos desde el índice inicial hasta el final del conjunto. Por ejemplo:

1array1[4:]

pitón

Salida:

1array([4,5,6,7,8])

pitón

O, alternativamente, especificar sólo el índice de parada.

1array1[:7]

pitón

Salida:

1array([0,1,2,3,4,5,6])

pitón

Como era de esperar, la rebanada incluye todos los elementos desde el inicio del conjunto hasta el valor indexado. Las reglas para seleccionar el elemento de inicio o de parada siguen siendo válidas.

Uso de índices negativos

También puede usar valores negativos para mayor flexibilidad. Para entender cómo funcionan los valores negativos, mira esta imagen de abajo:

Cada elemento de un conjunto puede ser referenciado con dos índices. Por ejemplo, tanto el «3» como el «-6» pueden ser usados para recuperar el valor «40». Primero declaremos una matriz con valores similares:

12array1 = np.array([10,20,30,40,50,60,70,80,90])array1

pitón

Salida:

1array([10,20,30,40,50,60,70,80,90])

pitón

Usar tanto «3» como «-6» da el mismo valor.

1array1[3]

pitón

Salida:

140

python

1array1[-6]

pitón

Salida:

140

pitón

Puedes usar este truco para cortar la matriz también. Por ejemplo,

1array1[3:-2]

pitón

Salida:

1array([40,50,60,70])

pitón

Y aquí hay una representación visual de cómo funciona:

Intentémoslo una vez más. Esta vez usemos un valor negativo para ambos índices.

1array1[-3:-1]

pitón

Salida:

1array([70,80])

pitón

Pero tenga en cuenta que no puede cambiar el orden de los índices. En otras palabras, la operación de corte no puede viajar hacia atrás. Si intentas hacer eso, obtendrás una matriz vacía como salida. Por ejemplo:

1array1[-1:-3]

pitón

Salida:

1array([], dtype=int32)

pitón

Usando el índice de pasos

También puede incluir un índice de pasos si desea saltarse algunos elementos en su operación de corte. Por ejemplo:

1array1[2:6:3]

pitón

Salida:

1array([30,60])

pitón

2:6$0027 indican las posiciones de índice para la operación de corte. El valor $00273$0027 indica la operación de corte al paso tres elementos después de cada selección.

O también puedes hacer algo como esto:

1array1[:7:2]

pitón

Salida:

1array([10,30,50,70])

pitón

Aquí, $0027:7$0027 significa rebanada de $00270:7$0027 y el último valor $00272$0027 indica una operación de paso a paso de dos elementos después de cada selección.

Cortando un conjunto bidimensional

Hablemos de cortar una matriz bidimensional. Tengo este arreglo de matriz1

12array1 = np.arange(16).reshape(4,4)array1

pitón

Salida:

1234array([[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15]])

pitón

Cortar una matriz bidimensional es muy similar a cortar una matriz unidimensional. Sólo tienes que usar una coma para separar el corte de la fila y el corte de la columna. Por ejemplo:

1array1[0:2,1:3]

pitón

Salida:

12array([[1,2],[5,6]]])

pitón

Aquí hay una representación pictórica:

Del mismo modo, puede extenderse a matrices dimensionales más altas.