Inversión de un array NumPy

En ocasiones nos encontramos con que necesitamos invertir un array NumPy. Por ejemplo partimos del array:

numbers = np.array(["one", "two", "three", "four"])
numbers

array(['one', 'two', 'three', 'four'], dtype='<U5')

...y deseamos obtener el mismo array tras invertir sus elementos. Una opción es extraer los valores del array "hacia atrás":

numbers[::-1]

array(['four', 'three', 'two', 'one'], dtype='<U5')

Con la anterior expresión estamos recorriendo todo el array (desde el índice 0 hasta el último) saltando de -1 en -1. El resultado es el deseado, como podemos ver.

Otra opción es recurrir a la función np.flip(), que invierte los valores de un array a lo largo del eje que se indique. En nuestro ejemplo:

np.flip(numbers)

array(['four', 'three', 'two', 'one'], dtype='<U5')

Si se tratase de un array de más de una dimensión, podemos usar el parámetro axis para especificar el eje deseado:

a = np.arange(9).reshape(3, -1)
a

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

Ahora, si especificamos el eje 0 (valor por defecto), la ordenación se realiza en el eje vertical:

np.flip(a, axis = 0)

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

...y si especificamos el eje 1, la ordenación se realiza en el eje horizontal:

np.flip(a, axis = 1)

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

Categoría
Submitted by admin on Mon, 06/22/2020 - 15:42