¿Cómo obtener el índice de la array multidimensional NumPy en orden inverso?

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

Deja una respuesta

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