Acceder a los elementos de un array.
[], [,], ...
Acceder a un elemento de un array.
Para acceder a un elemento se utiliza la referencia a su posición dentro del array mediante uno o más índices según se trate de un array unidimensional o de más dimensiones, escribiendo el índice o índices entre corchetes "[]" y separando con comas "," cuando sean más de uno: [1], [5, 23], [-1, 1, 10].
En cada eje o dimensión el índice 0 hace referencia al primer elemento, el 1 al segundo y así sucesivamente hasta el último. También es posible referenciar comenzando desde el último elemento utilizando números negativos: en ese caso el índice -1 hace referencia al último elemento, el -2 al penúltimo y así sucesivamente.
Cuando se hace referencia a un índice inexistente en un array Numpy genera la excepción IndexError.
Para acceder a un elemento se utiliza la referencia a su posición dentro del array mediante uno o más índices según se trate de un array unidimensional o de más dimensiones, escribiendo el índice o índices entre corchetes "[]" y separando con comas "," cuando sean más de uno: [1], [5, 23], [-1, 1, 10].
En cada eje o dimensión el índice 0 hace referencia al primer elemento, el 1 al segundo y así sucesivamente hasta el último. También es posible referenciar comenzando desde el último elemento utilizando números negativos: en ese caso el índice -1 hace referencia al último elemento, el -2 al penúltimo y así sucesivamente.
Cuando se hace referencia a un índice inexistente en un array Numpy genera la excepción IndexError.
# Acceder a los elementos de un array. # Declarar 3 arrays con distinto número de dimensiones: a = np.array([1, 2, 3, 4, 5]) b = np.array([[1, 2, 3], [4, 5, 6]]) c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) print(a) # [1 2 3 4 5] print(b) # [[1 2 3] # [4 5 6]] print(c) # [[[1 2] # [3 4]] # # [[5 6] # [7 8]]] # Acceder al primer elemento de cada array: print(a[0]) # 1 print(b[0,0]) # 1 print(c[0,0,0]) # 1 # Acceder a elementos de cada array: print(a[2]) # 3 print(b[1,0]) # 4 print(c[1,0,1]) # 6 # Acceder al último elemento de cada array: print(a[-1]) # 5 print(b[-1,-1]) # 6 print(c[-1,-1,-1]) # 8
[:], [::], ...
Acceder a varios elementos de un array.
Para acceder a varios elementos se utiliza el mismo procedimiento que se sigue con listas y tuplas en Python: si los elementos son consecutivos se expresa un rango con el índice del elemento inicial seguido de dos puntos ':' y el índice del elemento final:
En referencias de arrays multidimensionales se utilizará el mismo sistema para el acceso a los elementos en cada uno de sus ejes:
Para acceder a varios elementos se utiliza el mismo procedimiento que se sigue con listas y tuplas en Python: si los elementos son consecutivos se expresa un rango con el índice del elemento inicial seguido de dos puntos ':' y el índice del elemento final:
- array[0:3] : Acceder a los 3 primeros elementos (desde el índice 0 al 2).
- array[1:-2] : Acceder a los elementos desde el índice 1 al antepenúltimo.
- array[0:6:2] : Acceder a los elementos con el indice 0, 2 y 4.
- array[-1:-4:-2] : Acceder a los elementos que ocupan la última y antepenúltima posición.
- array[:4] : Acceder a los cuatro primeros elementos (desde el índice 0 al 3).
- array[2:] : Acceder a los elementos desde el índice 2 al último.
- array[:] : Acceder a todos los elementos.
En referencias de arrays multidimensionales se utilizará el mismo sistema para el acceso a los elementos en cada uno de sus ejes:
- array[0:2, 0:2] : Accede a los elementos 0,0; 0,1; 1,0 y 1,1 de un array 2D.
- array[:, 1:3] : Accede a todos los elementos del eje 0 pero con índice 1 y 2 en el eje 1.
# Acceder a varios elementos de un array. # Declarar 3 arrays con distinto número de dimensiones: a = np.array([1, 2, 3, 4, 5]) b = np.array([[1, 2, 3], [4, 5, 6]]) c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # Acceder a los cuatro primeros elementos (del índice 0 al 3): print(a[0:4]) # [1 2 3 4] # Acceder a los elementos del 3º hasta el penúltimo (del # índice 2 al 4): print(a[2:-1]) # [3 4] # Acceder a los elementos impares del array: print(a[::2]) # [1 3 5] # Acceder a los elementos pares del array: print(a[1::2]) # [2 4] # Acceder a los elementos con índices 0, 3 y 4: print(a[[0, 3, 4]]) # [1, 4, 5] # Acceder a los últimos elementos en el eje 0 (filas) y # a todos en el eje 1 (columnas): print(b[-1, :]) # [4 5 6] # Acceder a los últimos elementos en eje 0 y a los del # índice 1 hasta el final en eje 1: print(b[-1, 1:]) # [5 6] # Acceder a todos los elementos en eje 0, en eje 1 y a los # del índice 1 en adelante en eje 2: print(c[:,:,1:]) # [[[2] # [4]] # # [[6] # [8]]]
Asignar elementos a una variable.
var = []
Asignar un elemento a una variable Numpy.
a = np.array([1, 2, 3, 4, 5]) b = np.array([[1, 2, 3], [4, 5, 6]]) c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) var1 = a[3] var2 = b[1,2] var3 = c[0,1,0] print(var1) # 4 print(var2) # 6 print(var3) # 3 # Obtener el tipo de una variable Numpy: a = np.array([1, 2, 3, 4, 5]) var1 = a[3] type(var1) # numpy.int64
var = [:]
Asignar una selección de elementos.
a = np.array([1, 2, 3, 4, 5]) b = np.array([[1, 2, 3], [4, 5, 6]]) c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) var1 = a[3:] var2 = b[:,-1] var3 = c[:1,:,:] print(var1) # [4 5] print(var2) # [3 6] print(var3) # [[[1 2] # [3 4]]]
item()
Asignar un elemento a una variable Python.
# Asignar el valor del elemento 1 a una variable Python: var1 = a.item(1) print(var1) # 2 # Asignar el valor del elemento (1,0) a una variable Python: var2 = b.item(1,0) print(var2) # 4 # Obtener el tipo de una variable Python: type(var1) # int
[condición]
Asignar los elementos que cumplan una condición.
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]], dtype=np.int8) b = a[a > 4] print(b) # [5 6 7 8]
Añadir, insertar y suprimir elementos.
append()
Añadir elementos al final de un array.
# Añadir 2 elementos al final de un array: a = np.array([1, 2, 3, 4, 5]) a = np.append(a, [6, 7]) print(a) # [1 2 3 4 5 6 7]
insert()
Insertar elementos en un array.
# Insertar en la posición 3 el valor 0: a = np.array([1, 2, 3, 4, 5, 6, 7]) a = np.insert(a, 3, 0) print(a) # [1 2 3 0 4 5 6 7] # Insertar en la posición 1 los valores -1 y -2: a = np.insert(a, 1, [-1, -2]) print(a) # [ 1 -1 -2 2 3 0 4 5 6 7] # Insertar columna (eje 1) con valores 0 en la columna # con índice 2: b = np.array([[1, 2, 3], [4, 5, 6]]) b = np.insert(b, 2, 0, axis=1) print(b) # [[1 2 0 3] # [4 5 0 6]] # Insertar dos columnas (eje 1) con valores -1 y -2 # repetidos al comienzo del array: b = np.insert(b, 0, [[-1], [-2]], axis=1) print(b) # [[-1 -2 1 2 0 3] # [-1 -2 4 5 0 6]] # Insertar columna (eje 1) con valores -4 y -5 al # comienzo del array: b = np.insert(b, [0], [[-4], [-5]], axis=1) print(b) # [[-4 -1 -2 1 2 0 3] # [-5 -1 -2 4 5 0 6]] # Insertar dos filas (eje 0) con valores 0 en las # posiciones 0 y 2: b = np.insert(b, [0, 2], 0, axis=0) print(b) # [[ 0 0 0 0 0 0 0] # [-4 -1 -2 1 2 0 3] # [-5 -1 -2 4 5 0 6] # [ 0 0 0 0 0 0 0]]
delete()
Suprimir elementos de un array.
# Suprimir el elemento 2 del array: a = np.array([1, 2, 3, 4, 5]) a = np.delete(a, 2) print(a) # [1 2 4 5] # Suprimir la primera fila (eje 0) del array: b = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) b = np.delete(b, 0, axis=0) print(b) # [[ 5 6 7 8] # [ 9 10 11 12]] Suprimir las columnas (eje 1) 0 y 2 del array: b = np.delete(b, [0, 2], axis=1) print(b) # [[ 6 8] # [10 12]]
delete() y s_[]]
Suprimir un rango de elementos.
# Suprimir las 2 primeras columnas (eje 1) del array: b = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) b = np.delete(b, np.s_[0:2], axis=1) print(b) # [[ 3 4] # [ 7 8] # [11 12]] # Suprimir las columnas (eje 1) pares del array: b = np.delete(b, np.s_[::2], axis=1) print(b) # [[ 4] # [ 8] # [12]]
vstack()
Añadir filas a un array.
# Añadir una fila (eje 0). b = np.array([[1, 2, 3], [4, 5, 6]]) b = np.vstack([b, [7, 8, 9]]) print(b) # [[1 2 3] # [4 5 6] # [7 8 9]]
hstack()
Añadir columnas a un array.
# Añadir una columna (eje 1): b = np.hstack([b, ([-1], [-2], [-3])]) print(b) # [[ 1 2 3 -1] # [ 4 5 6 -2] # [ 7 8 9 -3]]
Modificar elementos.
array[indice/s] = valor | itemset()
Modificar un elemento.
# Cambiar el valor del elemento 4 por 0: a = np.array([1, 2, 3, 4, 5]) a[4] = 0 # equivalente a a.itemset(4, 0) print(a) # [1 2 3 4 0] # Cambiar el valor del elemento (1,1) por -1: b = np.array([[1, 2, 3], [4, 5, 6]]) b[1, 1] = -1 # equivalente a b.itemset((1, 1), -1) print(b) # [[ 1 2 3] # [ 4 -1 6]]
Operaciones con múltiples elementos.
take()
Crear un array a partir de referencias a los elementos de otro array.
a = np.array([1, 2, 3, 4, 5]) indices = [0, 2, 4] b = a.take(indices) print(b) # [1 3 5]
put()
Sustituir valores de un array por nuevos a partir de sus referencias.
a = np.array([1, 2, 3, 4, 5]) indices = [1, 3, 4] nuevos = [10, 30, 40] a.put(indices, nuevos) print(a) # [ 1 10 3 30 40]
putmask()
Modificar los elementos del array que cumplan una condición.
a = np.array([(1, 2, 3), (4, 5, 6)]) np.putmask(a, a>3, a*2) print(a) [[ 1 2 3] [ 8 10 12]]
repeat()
Crear un array con elementos repetidos.
# Crear un array con el mismo elemento repetido: a = np.repeat(3, 4) print(a) # [3 3 3 3] # Crear un array con varios elementos repetidos: a = np.repeat([1,2,3], 2) print(a) # [1 1 2 2 3 3] # Crear un array bidimensional repitiendo filas 2 veces: a = np.repeat([[1,2],[3,4]], 2, axis=0) print(a) # [[1 2] # [1 2] # [3 4] # [3 4]] # Crear un array bidimensional repitiendo columnas 2 veces: a = np.repeat([[1,2],[3,4]], 2, axis=1) print(a) # [[1 1 2 2] # [3 3 4 4]]
compress()
Seleccionar por su posición elementos de un array.
# Seleccionar elementos de "a" con valor 1 en la misma posición: a = np.array([99, 98, 97, 88, 87, 86, 77, 76, 75]) b = a.compress([0, 0, 1, 0, 0, 1]) print(b) # [97 86] # Obtener segmentos de "a" con valor 1 en la misma posición: a = np.array([[99, 98, 97], [88, 87, 86], [77, 76, 75]]) b = a.compress([1,0,1], axis=0) print(b) # [[99 98 97] # [77 76 75]]
diagonal()
Obtener la diagonal de un array.
a = np.arange(9).reshape(3,3) print(a) # [[0 1 2] # [3 4 5] # [6 7 8]] print(a.diagonal()) # [0 4 8] print(a.diagonal(-1)) # [3 7] print(a.diagonal(1)) # [1 5]
choose()
Crear un array seleccionando elementos de varios arrays.
# Crear un array seleccionando los elementos del segundo array: a = np.array([1, 2, 3, 4]) b = np.array([5, 6, 7, 8]) matrices = [a, b] c = np.choose([1], matrices) print(c) # [5 6 7 8] # Crear un array seleccionando elementos de varios arrays. # Seleccionar el primer elemento del array a; el segundo elemento # del array b y el tercer elemento del array b. # matrices es un lista que contiene los arrays a, b, c que ocupan # las posiciones 0, 1 y 2, respectivamente. # En el método choose() el primer argumento es una lista que indica # los elementos que hay que seleccionar. La posición de sus valores # en dicha lista señalan la posición del elemento a seleccionar y # el valor el array de donde hay que seleccionar: a = np.array([10, 20, 30]) b = np.array([40, 50, 60]) c = np.array([70, 80, 90]) matrices = [a, b, c] d = np.choose([0, 1, 1], matrices) print(d) # [10 50 60] # Seleccionar el primer elemento del array c; el segundo del # array b y el tercero del array a: a = np.array([10, 20, 30]) b = np.array([40, 50, 60]) c = np.array([70, 80, 90]) matrices = [a, b, c] d = np.choose([2, 1, 0], matrices) print(d) # [70 50 30]
for/in, enumerate(), range()
Recorrer todos los elementos de un array.
# Recorrer todos los elementos del vector a con enumerate(). a = np.array([1, 2, 3, 4, 5]) for indice, elemento in enumerate(a): print(f'{indice}: {elemento}') # 0: 1 # 1: 2 # 2: 3 # 3: 4 # 4: 5 # Recorrer todos los elementos de un array 2D con range(): b = np.array([[1, 2, 3], [4, 5, 6]]) filas, columnas = b.shape for fila in range(filas): for columna in range(columnas): print(f'{fila},{columna}: {b[fila, columna]}') # 0,0: 1 # 0,1: 2 # 0,2: 3 # 1,0: 4 # 1,1: 5 # 1,2: 6
[for in]] | [for in if]
Listas de comprensión.
# Generar lista con elementos elevados al cuadrado: a = np.array([1, 2, 3, 4, 5]) lista1 = [valor**2 for valor in a] print(lista1) # [1, 4, 9, 16, 25] # Generar lista con elementos pares elevados al cuadrado: lista2 = [valor**2 for valor in a if valor % 2 == 0] print(lista2) # [4, 16]