¿Cómo reorganizar las columnas de una array 2D NumPy usando posiciones de índice dadas?

En este artículo, aprenderemos cómo reorganizar las columnas de una array numpy dada usando posiciones de índice dadas. Aquí las columnas se reorganizan con los índices dados. Para esto, podemos simplemente almacenar los valores de las columnas en listas y organizarlos de acuerdo con la lista de índice dada, pero este enfoque es muy costoso. Entonces, usando el concepto de array numpy, esto se puede hacer fácilmente en un tiempo mínimo.

Ejemplo :

Arr = [[1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5] ] e i = [2, 4, 0, 3, 1]
, la salida es [[3, 5, 1, 4, 2], [3, 5, 1, 4, 2], [3, 5, 1, 4, 2], [3, 5, 1, 4, 2], [3, 5, 1, 4, 2]].

Aquí, i[0] = 2 es decir; Tercera columna, por lo tanto, salida = [[3],[3],[3],][3],[3]].
     i[1] = 4 es decir; Quinta columna, por lo que la salida = [[3,5],[3,5],[3,5],][3,5],[3,5]].
     i[2] = 0 es decir; Primera columna, por lo tanto, salida = [[3,5,1],[3,5,1],[3,5,1],][3,5,1],[3,5,1]].
     i[3] = 3 es decir; 4.ª columna, por lo que la salida = [[3,5,1,4],[3,5,1,4],[3,5,1,4],][3,5,1,4],[3, 5,1,4]].
     i[4] = 1 es decir; Segunda columna, por lo tanto, salida = [[3,5,1,4,2],[3,5,1,4,2],[3,5,1,4,2],][3,5,1, 4,2],[3,5,1,4,2]].

A continuación se muestra la implementación con un ejemplo:

Python3

# importing package
import numpy
  
# create a numpy array
arr = numpy.array([[1,2,3,4,5],
                   [1,2,3,4,5],
                   [1,2,3,4,5],
                   [1,2,3,4,5],
                   [1,2,3,4,5]
                   ])
  
# view array
print(arr)
  
# declare index list
i = [2,4,0,3,1]
  
# create output
output = arr[:,i]
  
# view output
print(output)

Producción :

[[1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]]
[[3 5 1 4 2]
 [3 5 1 4 2]
 [3 5 1 4 2]
 [3 5 1 4 2]
 [3 5 1 4 2]]

Publicación traducida automáticamente

Artículo escrito por deepanshu_rustagi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *