Operaciones de arrays de Numpy

Numpy contiene algunas funciones para manejar arrays, que se pueden clasificar aproximadamente en las siguientes categorías:


Modificar la forma de los arrays

Función Descripción
reshape Modifica la forma sin cambiar los datos
flat Iterador de elementos de array
flatten Devuelve una copia del array; los cambios realizados en la copia no afectan al array original
ravel Devuelve el array aplanado

numpy.reshape

La función numpy.reshape puede modificar la forma sin cambiar los datos, con el siguiente formato:

numpy.reshape(arr, newshape, order='C')
  • arr: El array cuya forma se va a modificar
  • newshape: Entero o array de enteros; la nueva forma debe ser compatible con la forma original
  • order: 'C' -- por filas, 'F' -- por columnas, 'A' -- orden original, 'k' -- orden de aparición de los elementos en memoria.

Ejemplo

import numpy as np a = np.arange(8) print ('Array original:') print (a) print ('\n') b = a.reshape(4,2) print ('Array modificado:') print (b)

El resultado de salida es el siguiente:

原始数组:
[0 1 2 3 4 5 6 7]

修改后的数组:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]

numpy.ndarray.flat

numpy.ndarray.flat es un iterador de elementos de array, como en el siguiente ejemplo:

Ejemplo

import numpy as np a = np.arange(9).reshape(3,3) print ('Array original:') for row in a: print (row) # Para procesar cada elemento del array, se puede usar el atributo flat, que es un iterador de elementos de array: print ('Array después de la iteración:') for element in a.flat: print (element)

El resultado de salida es el siguiente:

原始数组:
[0 1 2]
[3 4 5]
[6 7 8]
迭代后的数组:
0
1
2
3
4
5
6
7
8

numpy.ndarray.flatten

numpy.ndarray.flatten devuelve una copia del array; los cambios realizados en la copia no afectan al array original. Su formato es el siguiente:

ndarray.flatten(order='C')

Descripción de parámetros:

  • order: 'C' -- por filas, 'F' -- por columnas, 'A' -- orden original, 'K' -- orden de aparición de los elementos en memoria.

Ejemplo

import numpy as np a = np.arange(8).reshape(2,4) print ('Array original:') print (a) print ('\n') # Por defecto, por filas print ('Array aplanado:') print (a.flatten()) print ('\n') print ('Array aplanado con orden estilo F:') print (a.flatten(order = 'F'))

El resultado de salida es el siguiente:

原数组:
[[0 1 2 3]
 [4 5 6 7]]


展开的数组:
[0 1 2 3 4 5 6 7]


以 F 风格顺序展开的数组:
[0 4 1 5 2 6 3 7]

numpy.ravel

numpy.ravel() aplana los elementos del array, normalmente en orden 'estilo C'. Devuelve una vista del array (view, algo similar al concepto de referencia en C/C++), y las modificaciones afectan al array original.

Esta función recibe dos parámetros:

numpy.ravel(a, order='C')

Descripción de parámetros:

  • order: 'C' -- por filas, 'F' -- por columnas, 'A' -- orden original, 'K' -- orden de aparición de los elementos en memoria.

Ejemplo

import numpy as np a = np.arange(8).reshape(2,4) print ('Array original:') print (a) print ('\n') print ('Después de llamar a la función ravel:') print (a.ravel()) print ('\n') print ('Después de llamar a la función ravel con orden estilo F:') print (a.ravel(order = 'F'))

El resultado de salida es el siguiente:

原数组:
[[0 1 2 3]
 [4 5 6 7]]


调用 ravel 函数之后:
[0 1 2 3 4 5 6 7]


以 F 风格顺序调用 ravel 函数之后:
[0 4 1 5 2 6 3 7]

Voltear arrays

Función Descripción
transpose Intercambia las dimensiones del array
ndarray.T yself.transpose()Igual
rollaxis Rueda el eje especificado hacia atrás
swapaxes Intercambia dos ejes del array

numpy.transpose

La función numpy.transpose se utiliza para intercambiar las dimensiones de un array, con el siguiente formato:

numpy.transpose(arr, axes)

Descripción de parámetros:

  • arr: El array a operar
  • axes: Lista de enteros que corresponden a las dimensiones; normalmente todas las dimensiones se intercambian.

Ejemplo

import numpy as np a = np.arange(12).reshape(3,4) print ('Array original:') print (a ) print ('\n') print ('Array transpuesto:') print (np.transpose(a))

El resultado de salida es el siguiente:

原数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]


对换数组:
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]

numpy.ndarray.T es similar a numpy.transpose:

Ejemplo

import numpy as np a = np.arange(12).reshape(3,4) print ('Array original:') print (a) print ('\n') print ('Array transpuesto:') print (a.T)

El resultado de salida es el siguiente:

原数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]


转置数组:
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]

numpy.rollaxis

La función numpy.rollaxis rueda un eje específico hacia atrás hasta una posición determinada, con el siguiente formato:

numpy.rollaxis(arr, axis, start)

Descripción de parámetros:

  • arr: Array
  • axis: El eje que se va a rodar hacia atrás; las posiciones relativas de los otros ejes no cambian.
  • start: El valor predeterminado es cero, lo que indica un desplazamiento completo. Rodará a la posición específica.

Ejemplo

import numpy as np # Se crea un ndarray tridimensional a = np.arange(8).reshape(2,2,2) print ('Array original:') print (a) print ('Obtener un valor del array:') print(np.where(a==6)) print(a[1,1,0]) # Es 6 print ('\n') # Se rueda el eje 2 al eje 0 (de ancho a profundidad) print ('Llamando a la función rollaxis:') b = np.rollaxis(a,2,0) print (b) # Observa el elemento a[1,1,0], es decir, la coordenada de 6, que se convierte en [0, 1, 1] # El último 0 se mueve al frente print(np.where(b==6)) print ('\n') # Se rueda el eje 2 al eje 1: (de ancho a altura) print ('Llamando a la función rollaxis:') c = np.rollaxis(a,2,1) print (c) # Observa el elemento a[1,1,0], es decir, la coordenada de 6, que se convierte en [1, 0, 1] # El último 0 y el 1 que está delante intercambian posiciones print(np.where(c==6)) print ('\n')

El resultado de salida es el siguiente:

原数组:
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]
获取数组中一个值:
(array([1]), array([1]), array([0]))
6


调用 rollaxis 函数:
[[[0 2]
  [4 6]]

 [[1 3]
  [5 7]]]
(array([0]), array([1]), array([1]))


调用 rollaxis 函数:
[[[0 2]
  [1 3]]

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

numpy.swapaxes

La función numpy.swapaxes se utiliza para intercambiar dos ejes de un array, con el siguiente formato:

numpy.swapaxes(arr, axis1, axis2)
  • arr: El array de entrada
  • axis1: El entero correspondiente al primer eje
  • axis2: El entero correspondiente al segundo eje

Ejemplo

import numpy as np # Se crea un ndarray tridimensional a = np.arange(8).reshape(2,2,2) print ('Array original:') print (a) print ('\n') # Ahora se intercambia el eje 0 (dirección de profundidad) con el eje 2 (dirección de ancho) print ('Array después de llamar a la función swapaxes:') print (np.swapaxes(a, 2, 0))

El resultado de salida es el siguiente:

原数组:
[[[0 1]
  [2 3]]

 [[4 5]
  [6 7]]]


调用 swapaxes 函数后的数组:
[[[0 4]
  [2 6]]

 [[1 5]
  [3 7]]]

Modificar dimensiones de los arrays

Dimensión Descripción
broadcast Produce un objeto que imita la transmisión (broadcast)
broadcast_to Transmite el array a una nueva forma
expand_dims Expande la forma del array
squeeze Elimina entradas unidimensionales de la forma del array

numpy.broadcast

numpy.broadcast se utiliza para imitar la transmisión (broadcast). Devuelve un objeto que encapsula el resultado de transmitir un array a otro array.

Esta función utiliza dos arrays como parámetros de entrada, como en el siguiente ejemplo:

Ejemplo

import numpy as np x = np.array([[1], [2], [3]]) y = np.array([4, 5, 6]) # Transmitir x a y b = np.broadcast(x,y) # Tiene el atributo iterator, basado en una tupla de iteradores de sus propios componentes print ('Transmitir x a y:') r,c = b.iters # En Python3.x es next(context), en Python2.x es context.next() print (next(r), next(c)) print (next(r), next(c)) print ('\n') # El atributo shape devuelve la forma del objeto de transmisión print ('Forma del objeto de transmisión:') print (b.shape) print ('\n') # Usar manualmente broadcast para sumar x e y b = np.broadcast(x,y) c = np.empty(b.shape) print ('Sumar x e y manualmente usando broadcast:') print (c.shape) print ('\n') c.flat = [u + v for (u,v) in b] print ('Llamando a la función flat:') print (c) print ('\n') # Se obtiene el mismo resultado que el soporte de transmisión integrado de NumPy print ('La suma de x e y:') print (x + y)

El resultado es:

对 y 广播 x:
1 4
1 5


广播对象的形状:
(3, 3)


手动使用 broadcast 将 x 与 y 相加:
(3, 3)


调用 flat 函数:
[[5. 6. 7.]
 [6. 7. 8.]
 [7. 8. 9.]]


x 与 y 的和:
[[5 6 7]
 [6 7 8]
 [7 8 9]]

numpy.broadcast_to

La función numpy.broadcast_to transmite el array a una nueva forma. Devuelve una vista de solo lectura sobre el array original. Normalmente no es contigua. Si la nueva forma no cumple las reglas de transmisión de NumPy, la función puede lanzar un ValueError.

numpy.broadcast_to(array, shape, subok)

Ejemplo

import numpy as np a = np.arange(4).reshape(1,4) print ('Array original:') print (a) print ('\n') print ('Después de llamar a la función broadcast_to:') print (np.broadcast_to(a,(4,4)))

El resultado es:

原数组:
[[0 1 2 3]]


调用 broadcast_to 函数之后:
[[0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]]

numpy.expand_dims

La función numpy.expand_dims expande la forma del array insertando un nuevo eje en la posición especificada. El formato de la función es el siguiente:

 numpy.expand_dims(arr, axis)

Descripción de parámetros:

  • arr: El array de entrada
  • axis: La posición donde se inserta el nuevo eje

Ejemplo

import numpy as np x = np.array(([1,2],[3,4])) print ('Array x:') print (x) print ('\n') y = np.expand_dims(x, axis = 0) print ('Array y:') print (y) print ('\n') print ('Formas de los arrays x e y:') print (x.shape, y.shape) print ('\n') # Se inserta un eje en la posición 1 y = np.expand_dims(x, axis = 1) print ('Array y después de insertar un eje en la posición 1:') print (y) print ('\n') print ('x.ndim e y.ndim:') print (x.ndim,y.ndim) print ('\n') print ('x.shape e y.shape:') print (x.shape, y.shape)

El resultado de salida es:

数组 x:
[[1 2]
 [3 4]]


数组 y:
[[[1 2]
  [3 4]]]


数组 x 和 y 的形状:
(2, 2) (1, 2, 2)


在位置 1 插入轴之后的数组 y:
[[[1 2]]

 [[3 4]]]


x.ndim 和 y.ndim:
2 3


x.shape 和 y.shape:
(2, 2) (2, 1, 2)

numpy.squeeze

La función numpy.squeeze elimina las entradas de una dimensión de la forma del array dado. La sintaxis de la función es la siguiente:

numpy.squeeze(arr, axis)

Descripción de parámetros:

  • arr: array de entrada
  • axis: entero o tupla de enteros, utilizado para seleccionar un subconjunto de entradas de una dimensión en la forma

Ejemplo

import numpy as np x = np.arange(9).reshape(1,3,3) print ('Array x:') print (x) print ('\n') y = np.squeeze(x) print ('Array y:') print (y) print ('\n') print ('Las formas de los arrays x e y:') print (x.shape, y.shape)

El resultado de salida es:

数组 x:
[[[0 1 2]
  [3 4 5]
  [6 7 8]]]


数组 y:
[[0 1 2]
 [3 4 5]
 [6 7 8]]


数组 x 和 y 的形状:
(1, 3, 3) (3, 3)

Concatenar arrays

Función Descripción
concatenate Concatenar una secuencia de arrays a lo largo de un eje existente
stack Une una serie de arrays a lo largo de un nuevo eje.
hstack Apila horizontalmente los arrays de la secuencia (dirección de las columnas)
vstack Apila verticalmente los arrays de la secuencia (dirección de las filas)

numpy.concatenate

La función numpy.concatenate se utiliza para concatenar dos o más arrays de la misma forma a lo largo de un eje especificado. Su sintaxis es la siguiente:

numpy.concatenate((a1, a2, ...), axis)

Descripción de parámetros:

  • a1, a2, ...: arrays del mismo tipo
  • axis: eje a lo largo del cual se concatenan los arrays, por defecto es 0

Ejemplo

import numpy as np a = np.array([[1,2],[3,4]]) print ('Primer array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Segundo array:') print (b) print ('\n') # Las dimensiones de los dos arrays son iguales print ('Concatenar los dos arrays a lo largo del eje 0:') print (np.concatenate((a,b))) print ('\n') print ('Concatenar los dos arrays a lo largo del eje 1:') print (np.concatenate((a,b),axis = 1))

El resultado de salida es:

第一个数组:
[[1 2]
 [3 4]]


第二个数组:
[[5 6]
 [7 8]]


沿轴 0 连接两个数组:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]


沿轴 1 连接两个数组:
[[1 2 5 6]
 [3 4 7 8]]

numpy.stack

La función numpy.stack se utiliza para concatenar una secuencia de arrays a lo largo de un nuevo eje. Su sintaxis es la siguiente:

numpy.stack(arrays, axis)

Descripción de parámetros:

  • arraysSecuencia de arrays de la misma forma
  • axis: eje en el array resultante, a lo largo del cual se apilan los arrays de entrada

Ejemplo

import numpy as np a = np.array([[1,2],[3,4]]) print ('Primer array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Segundo array:') print (b) print ('\n') print ('Apilar los dos arrays a lo largo del eje 0:') print (np.stack((a,b),0)) print ('\n') print ('Apilar los dos arrays a lo largo del eje 1:') print (np.stack((a,b),1))

El resultado de salida es el siguiente:

第一个数组:
[[1 2]
 [3 4]]


第二个数组:
[[5 6]
 [7 8]]


沿轴 0 堆叠两个数组:
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]


沿轴 1 堆叠两个数组:
[[[1 2]
  [5 6]]

 [[3 4]
  [7 8]]]

numpy.hstack

numpy.hstack es un envoltorio conveniente de numpy.concatenate, utilizado para apilar arrays horizontalmente a lo largo del segundo eje (axis=1).

numpy.hstack trata los arrays unidimensionales como vectores columna para concatenarlos, lo que equivale a numpy.concatenate([numpy.atleast_1d(arr) for arr in arrays], axis=1) (cuando todos los arrays tienen dimensión ≥2, se concatenan directamente a lo largo de axis=1).

Ejemplo

import numpy as np a = np.array([[1,2],[3,4]]) print ('Primer array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Segundo array:') print (b) print ('\n') print ('Apilado horizontal:') c = np.hstack((a,b)) print (c) print ('\n')

El resultado de salida es el siguiente:

第一个数组:
[[1 2]
 [3 4]]


第二个数组:
[[5 6]
 [7 8]]


水平堆叠:
[[1 2 5 6]
 [3 4 7 8]]

numpy.vstack

numpy.vstack es un envoltorio conveniente de numpy.concatenate, utilizado para apilar arrays verticalmente a lo largo del primer eje (axis=0).

numpy.vstack promueve automáticamente los arrays unidimensionales a vectores fila bidimensionales y luego los concatena en la dirección vertical, lo que equivale a numpy.concatenate([numpy.atleast_2d(arr) for arr in arrays], axis=0).

Ejemplo

import numpy as np a = np.array([[1,2],[3,4]]) print ('Primer array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Segundo array:') print (b) print ('\n') print ('Apilado vertical:') c = np.vstack((a,b)) print (c)

El resultado de salida es:

第一个数组:
[[1 2]
 [3 4]]


第二个数组:
[[5 6]
 [7 8]]


竖直堆叠:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

Dividir arrays

Función Arrays y operaciones
split Divide un array en varios subarrays
hsplit Divide horizontalmente un array en varios subarrays (por columnas)
vsplit Divide verticalmente un array en varios subarrays (por filas)

numpy.split

La función numpy.split divide un array en subarrays a lo largo de un eje específico. Su sintaxis es la siguiente:

numpy.split(ary, indices_or_sections, axis)

Descripción de parámetros:

  • ary: el array a dividir
  • indices_or_sections: si es un entero, se divide en partes iguales usando ese número; si es un array, son las posiciones a lo largo del eje donde se divide (abierto por la izquierda, cerrado por la derecha)
  • axis: establece a lo largo de qué dirección se divide. Por defecto es 0, división transversal, es decir, dirección horizontal. Cuando es 1, división longitudinal, es decir, dirección vertical.

Ejemplo

import numpy as np a = np.arange(9) print ('Primer array:') print (a) print ('\n') print ('Dividir el array en tres subarrays de igual tamaño:') b = np.split(a,3) print (b) print ('\n') print ('Dividir el array en las posiciones indicadas en un array unidimensional:') b = np.split(a,[4,7]) print (b)

El resultado de salida es:

第一个数组:
[0 1 2 3 4 5 6 7 8]


将数组分为三个大小相等的子数组:
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]


将数组在一维数组中表明的位置分割:
[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8])]

Cuando axis es 0 se divide en dirección horizontal; cuando axis es 1 se divide en dirección vertical:

Ejemplo

import numpy as np

a = np.arange(16).reshape(4, 4)
print('Primer array:')
print(a)
print('\n')
print('División por defecto (eje 0):')
b = np.split(a,2)
print(b)
print('\n')

print('División a lo largo de la dirección horizontal:')
c = np.split(a,2,1)
print(c)
print('\n')

print('División a lo largo de la dirección horizontal:')
d= np.hsplit(a,2)
print(d)

El resultado de salida es:

第一个数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]


默认分割(0轴):
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]


沿水平方向分割:
[array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]


沿水平方向分割:
[array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])]

numpy.hsplit

La función numpy.hsplit se utiliza para dividir horizontalmente un array, dividiendo el array original especificando el número de arrays de la misma forma que se devolverán.

Ejemplo

import numpy as np harr = np.floor(10 * np.random.random((2, 6))) print ('Array original:') print(harr) print ('Después de dividir:') print(np.hsplit(harr, 3))

El resultado de salida es:

原array:
[[4. 7. 6. 3. 2. 6.]
 [6. 3. 6. 7. 9. 7.]]
拆分后:
[array([[4., 7.],
       [6., 3.]]), array([[6., 3.],
       [6., 7.]]), array([[2., 6.],
       [9., 7.]])]

numpy.vsplit

numpy.vsplit divide a lo largo del eje vertical, y su forma de división es la misma que el uso de hsplit.

Ejemplo

import numpy as np a = np.arange(16).reshape(4,4) print ('Primer array:') print (a) print ('\n') print ('División vertical:') b = np.vsplit(a,2) print (b)

El resultado de salida es:

第一个数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]


竖直分割:
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])]

Añadir y eliminar elementos de arrays

Función Elemento y descripción
resize Devuelve un nuevo array con la forma especificada
append Añade valores al final del array
insert Inserta valores antes del índice especificado a lo largo del eje dado
delete Elimina un subarray de un eje y devuelve el nuevo array después de la eliminación
unique Busca los elementos únicos dentro del array

numpy.resize

La función numpy.resize devuelve un nuevo array del tamaño especificado.

Si el tamaño del nuevo array es mayor que el tamaño original, contiene copias de los elementos del array original.

numpy.resize(arr, shape)

Descripción de parámetros:

  • arr: el array cuyo tamaño se va a modificar
  • shape: la nueva forma del array devuelto

Ejemplo

import numpy as np a = np.array([[1,2,3],[4,5,6]]) print ('Primer array:') print (a) print ('\n') print ('La forma del primer array:') print (a.shape) print ('\n') b = np.resize(a, (3,2)) print ('Segundo array:') print (b) print ('\n') print ('La forma del segundo array:') print (b.shape) print ('\n') # Nótese que la primera fila de a se repite en b, porque el tamaño aumentó print ('Modificar el tamaño del segundo array:') b = np.resize(a,(3,3)) print (b)

El resultado de salida es:

第一个数组:
[[1 2 3]
 [4 5 6]]


第一个数组的形状:
(2, 3)


第二个数组:
[[1 2]
 [3 4]
 [5 6]]


第二个数组的形状:
(3, 2)


修改第二个数组的大小:
[[1 2 3]
 [4 5 6]
 [1 2 3]]

numpy.append

La función numpy.append añade valores al final del array. La operación de añadir asigna un array completo y copia el array original en el nuevo array. Además, las dimensiones de los arrays de entrada deben coincidir; de lo contrario, se generará un ValueError.

La función append siempre devuelve un array unidimensional.

numpy.append(arr, values, axis=None)

Descripción de parámetros:

  • arr: array de entrada
  • values: el valor que se va a añadir aarrel valor a añadir, debe tener la misma forma quearrla misma forma (excepto en el eje donde se añade)
  • axis: por defecto es None. Cuando axis no está definido, se añade horizontalmente y el resultado siempre es un array unidimensional. Cuando axis está definido, puede ser 0 y 1 respectivamente. Cuando axis está definido, puede ser 0 y 1 respectivamente (el número de columnas debe ser el mismo). Cuando axis es 1, el array se añade a la derecha (el número de filas debe ser el mismo).

Ejemplo

import numpy as np a = np.array([[1,2,3],[4,5,6]]) print ('Primer array:') print (a) print ('\n') print ('Añadir elementos al array:') print (np.append(a, [7,8,9])) print ('\n') print ('Añadir elementos a lo largo del eje 0:') print (np.append(a, [[7,8,9]],axis = 0)) print ('\n') print ('Añadir elementos a lo largo del eje 1:') print (np.append(a, [[5,5,5],[7,8,9]],axis = 1))

El resultado de salida es:

第一个数组:
[[1 2 3]
 [4 5 6]]


向数组添加元素:
[1 2 3 4 5 6 7 8 9]


沿轴 0 添加元素:
[[1 2 3]
 [4 5 6]
 [7 8 9]]


沿轴 1 添加元素:
[[1 2 3 5 5 5]
 [4 5 6 7 8 9]]

numpy.insert

La función numpy.insert inserta valores en el array de entrada antes del índice dado y a lo largo del eje dado.

La función inserta los valores o arrays dados en la posición especificada (o array de posiciones) y luego devuelve un nuevo array. Los elementos insertados pueden ser valores escalares o arrays. Cabe señalar que la operación de inserción devuelve un nuevo array y no modifica el array original.

numpy.insert(arr, obj, values, axis)

Descripción de parámetros:

  • arr: array de entrada
  • obj: índice antes del cual se insertan los valores
  • values: los valores a insertar
  • axis: eje a lo largo del cual se inserta. Si no se proporciona, el array de entrada se aplana.

Ejemplo

import numpy as np a = np.array([[1,2],[3,4],[5,6]]) print ('Primer array:') print (a) print ('\n') print ('No se pasó el parámetro Axis. El array de entrada se aplana antes de la eliminación.') print (np.insert(a,3,[11,12])) print ('\n') print ('Se pasó el parámetro Axis. Se transmitirá el array de valores para que coincida con el array de entrada.') print ('Transmisión a lo largo del eje 0:') print (np.insert(a,1,[11],axis = 0)) print ('\n') print ('Transmisión a lo largo del eje 1:') print (np.insert(a,1,11,axis = 1))

El resultado de salida es el siguiente:

第一个数组:
[[1 2]
 [3 4]
 [5 6]]


未传递 Axis 参数。 在删除之前输入数组会被展开。
[ 1  2  3 11 12  4  5  6]


传递了 Axis 参数。 会广播值数组来配输入数组。
沿轴 0 广播:
[[ 1  2]
 [11 11]
 [ 3  4]
 [ 5  6]]


沿轴 1 广播:
[[ 1 11  2]
 [ 3 11  4]
 [ 5 11  6]]

numpy.delete

La función numpy.delete devuelve un nuevo array resultante de eliminar el subarray especificado del array de entrada. Al igual que en el caso de la función insert(), si no se proporciona el parámetro de eje, el array de entrada se aplana.

Numpy.delete(arr, obj, axis)

Descripción de parámetros:

  • arr: array de entrada
  • obj: puede ser un slice, un entero o un array de enteros, que indica el subarray que se debe eliminar del array de entrada
  • axis: eje a lo largo del cual se elimina el subarray dado. Si no se proporciona, el array de entrada se aplana.

Ejemplo

import numpy as np a = np.arange(12).reshape(3,4) print ('Primer array:') print (a) print ('\n') print ('No se pasó el parámetro Axis. El array de entrada se aplana antes de la inserción.') print (np.delete(a,5)) print ('\n') print ('Eliminar la segunda columna:') print (np.delete(a,1,axis = 1)) print ('\n') print ('Slice que contiene los valores alternativos eliminados del array:') a = np.array([1,2,3,4,5,6,7,8,9,10]) print (np.delete(a, np.s_[::2]))

El resultado de salida es:

第一个数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]


未传递 Axis 参数。 在插入之前输入数组会被展开。
[ 0  1  2  3  4  6  7  8  9 10 11]


删除第二列:
[[ 0  2  3]
 [ 4  6  7]
 [ 8 10 11]]


包含从数组中删除的替代值的切片:
[ 2  4  6  8 10]

numpy.unique

La función numpy.unique se utiliza para eliminar los elementos duplicados de un array.

numpy.unique(arr, return_index, return_inverse, return_counts)
  • arr: array de entrada; si no es un array unidimensional, se aplana
  • return_index: si estrue, devuelve las posiciones (índices) de los elementos de la nueva lista en la lista antigua, y se almacenan en forma de lista
  • return_inverse: si estrue,devuelve la posición (índice) de los elementos de la lista anterior en la nueva lista, y los almacena en forma de lista
  • return_counts: si estrue,devuelve el número de apariciones de los elementos del array deduplicado en el array original

Ejemplo

import numpy as np a = np.array([5,2,6,2,7,5,6,8,2,9]) print ('Primer array:') print (a) print ('\n') print ('Valores únicos del primer array:') u = np.unique(a) print (u) print ('\n') print ('Array de índices del array de valores únicos:') u,indices = np.unique(a, return_index = True) print (indices) print ('\n') print ('Podemos ver cada valor correspondiente a los índices del array original:') print (a) print ('\n') print ('Índices del array de valores únicos:') u,indices = np.unique(a,return_inverse = True) print (u) print ('\n') print ('Los índices son:') print (indices) print ('\n') print ('Reconstruir el array original usando los índices:') print (u[indices]) print ('\n') print ('Devuelve la cantidad de repeticiones de los elementos únicos:') u,indices = np.unique(a,return_counts = True) print (u) print (indices)

El resultado de salida es:

第一个数组:
[5 2 6 2 7 5 6 8 2 9]


第一个数组的去重值:
[2 5 6 7 8 9]


去重数组的索引数组:
[1 0 2 4 7 9]


我们可以看到每个和原数组下标对应的数值:
[5 2 6 2 7 5 6 8 2 9]


去重数组的下标:
[2 5 6 7 8 9]


下标为:
[1 0 2 0 3 1 2 4 0 5]


使用下标重构原数组:
[5 2 6 2 7 5 6 8 2 9]


返回去重元素的重复数量:
[2 5 6 7 8 9]
[3 2 2 1 1 1]
Otras extensiones