8.2.3 Manipulando elementos

8.2.3 Manipulando elementos
Los arrays multidimensionales de NumPy están indexados por unos ejes que establecen la forma en la que debemos acceder a sus elementos. Véase el siguiente diagrama:

8.2.3 Manipulando elementos

Figura 15: Esquema de ejes sobre los arrays de NumPy

Arrays unidimensionales

Acceso a arrays unidimensionales

8.2.3 Manipulando elementos

Modificación a arrays unidimensionales

8.2.3 Manipulando elementos

Borrado en arrays unidimensionales

8.2.3 Manipulando elementos

Nota: La funciones np.append() y np.insert() no son destructivas. Devuelven una copia modificada del array.

Inserción en arrays unidimensionales

8.2.3 Manipulando elementos

Para ambas funciones también es posible añadir varios elementos de una sola vez:

8.2.3 Manipulando elementos

Nota: La funciones np.append() y np.insert() no son destructivas. Devuelven una copia modificada del array
Python

Arrays multidimensionales

Partimos del siguiente array bidimensional (matriz) para ejemplificar las distintas operaciones:

8.2.3 Manipulando elementos

Acceso a arrays multidimensionales

8.2.3 Manipulando elementos

Acceso a elementos individuales:

8.2.3 Manipulando elementos

Acceso a múltiples elementos::

8.2.3 Manipulando elementos

Acceso a filas o columnas completas:

8.2.3 Manipulando elementos

Acceso a zonas parciales del array:

8.2.3 Manipulando elementos

Importante: Todos estos accesos crean una copia (vista) del array original. Esto significa que, si modificamos un valor en el array copia, se ve reflejado en el original. Para evitar esta situación podemos usar la función np.copy() y desvincular la vista de su fuente.

Modificación de arrays multidimensionales

8.2.3 Manipulando elementos

Borrado en arrays multidimensionales

8.2.3 Manipulando elementos

8.2.3 Manipulando elementos

Truco: Tener en cuenta que axis=0 hace referencia a filas y axis=1 hace referencia a columnas tal y como describe el diagrama del comienzo de la sección.Python

Inserción en arrays multidimensionales

Añadir elementos al final del array:

8.2.3 Manipulando elementos

Insertar elementos en posiciones arbitrarias del array:

8.2.3 Manipulando elementos

Ejercicio

Utilizando las operaciones de modificación, borrado e inserción, convierta la siguiente matriz:

8.2.3 Manipulando elementos

en esta:

8.2.3 Manipulando elementos

y luego en esta:

8.2.3 Manipulando elementos

Apilando matrices

Hay veces que nos interesa combinar dos matrices (arrays en general). Una de los mecanismos que nos proporciona NumPy es el apilado.

Apilado vertical:

8.2.3 Manipulando elementos

Apilado horizontal:

8.2.3 Manipulando elementos
Repitiendo elementos

Repetición por ejes: El parámetro de repetición indica el número de veces que repetimos el array completo por cada eje:

8.2.3 Manipulando elementos

Repetición por elementos: El parámetro de repetición indica el número de veces que repetimos cada elemento del array:

8.2.3 Manipulando elementos

8.2.3 Manipulando elementos

Acceso por diagonal

Es bastante común acceder a elementos de una matriz (array en general) tomando como referencia su diagonal. Para ello, NumPy nos provee de ciertos mecanismos que veremos a continuación.

Para ejemplificarlo, partiremos del siguiente array:

8.2.3 Manipulando elementos

Extracción de elementos por diagonal

La función np.diag() permite acceder a los elementos de un array especificando un parámetro k que indica la «distancia» con la diagonal principal:

Veamos cómo variando el parámetro k obtenemos distintos resultados:

8.2.3 Manipulando elementos

Figura 16: Acceso a elementos de un array por su diagonal

8.2.3 Manipulando elementos

Modificación de elementos por diagonal

NumPy también provee un método np.diag_indices() que retorna los índices de los elementos de la diagonal principal, con lo que podemos modificar sus valores directamente:

8.2.3 Manipulando elementos

Truco: Existen igualmente las funciones np.triu_indices() y np.tril_indices() para obtener los índices de la diagonal superior e inferior de una matriz.

Publicaciones Similares