En este artículo, veremos cómo obtener el índice de la array multidimensional NumPy en orden inverso.
Acercarse
- Primero, importamos la biblioteca NumPy e inicializamos los parámetros necesarios que incluyen la array en la que necesitamos trabajar y otros parámetros requeridos.
- Ahora vamos a recorrer cada fila, voltearla y encontrar el índice del elemento deseado en cada fila en orden inverso y almacenarlo en nuestra lista (resultado) que habíamos creado.
- Ahora obtuvimos todos nuestros índices del reverso de las filas en la array. Ahora necesitamos convertir la indexación adecuada para ser leída de izquierda a derecha, por lo tanto, restamos la longitud de la fila con cada índice y la reducimos aún más en uno para obtener nuestra array adecuada para la indexación cero.
Índice final = Elementos totales en filas – Índice actual-1
Ejemplo:
Aporte:
[[1,2,3,4,2],
[2,3,4,1,5],
[2,2,4,3,2],
[1,3,4,2,4]]
Producción:
[4 0 4 3]
Explicación: en el ejemplo anterior, estamos tratando de encontrar la indexación de la primera ocurrencia de ‘2’ en orden inverso y teníamos 5 elementos en cada fila y después de la indexación hacia atrás obtenemos una array como [0, 4, 0, 1] ahora utilizando nuestra fórmula anterior.
final_list[0] => Total de elementos en filas – Índice actual- 1 => 5-0-1 =>4
lista_final[1] => Total de elementos en filas – Índice actual- 1 => 5-4-1 =>0
lista_final[2] => Total de elementos en filas – Índice actual- 1 => 5-0-1 =>4
lista_final[3] => Total de elementos en filas – Índice actual- 1 => 5-1-1 =>3
Ejemplo 1:
Python3
#import Modules import numpy as np # initialize parameters x = np.array([[1, 2, 3, 4, 2], [2, 3, 4, 1, 5], [2, 2, 4, 3, 2], [1, 3, 4, 2, 4]]) num_cols = len(x[0]) result = [] # loop over each row for row in x: row = np.flip(row) index = np.where(row == 2) result.append(index[0][0]) # get the final indexes # Store the result as of the initial arrays final_list = num_cols-np.array(result)-1 # print print(final_list)
Producción:
[4 0 4 3]
Ejemplo 2:
El método anterior también podría funcionar para strings. En el siguiente ejemplo, estamos tratando de encontrar la indexación de la primera aparición de ‘Sam’ en orden inverso.
Python3
#import Modules import numpy as np # initialize parameters x = np.array([["Sam", "John", "Lilly"], ["Sam", "Sam", "Kate"], ["Jack", "John", "Sam"], ["Sam", "Jack", "Rose"]]) num_cols = len(x[0]) result = [] # loop over each row for row in x: row = np.flip(row) index = np.where(row == "Sam") result.append(index[0][0]) # get the final indexes # Store the result as of the initial arrays final_list = num_cols-np.array(result)-1 # print print(final_list)
Producción:
[0 1 2 ]
Ejemplo 3:
Para los datos booleanos, tenemos el mismo enfoque, pero dado que solo tiene 0 o 1 como valor, podemos usar argmax() , que encontrará el índice del valor más alto (para cada fila con eje = 1). Dado que True es equivalente a 1 y False a 0, registrará el índice del primer valor True.
Python3
# import Modules import numpy as np # initialize parameters a = np.array([[True, False, True, True], [False, False, True, False], [False, True, True, True], [True, False, False, True]]) reversed_array = a[:, ::-1] max_val = np.argmax(reversed_array, axis=1) num_rows = a.shape[1] final_list = num_rows-1-max_val print(final_list)
Producción:
[3 2 3 3]
Publicación traducida automáticamente
Artículo escrito por pulkit12dhingra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA