如何反向获取NumPy多维数组的索引

如何反向获取NumPy多维数组的索引

在这篇文章中,我们将看到如何以反向顺序获得NumPy多维数组的索引。

步骤

  • 首先,我们导入NumPy库并初始化必要的参数,包括我们需要处理的矩阵和其他必要的参数。
  • 现在,我们将在每一行上进行循环,翻转它,在每一行中按相反的顺序找到所需元素的索引,并将其存储在我们所创建的列表(result)中。
  • 现在我们从数组中的行的反向得到了所有的索引。我们现在需要转换适合从左到右读取的索引,因此,我们用每个索引减去行的长度,并进一步减一,以获得适合零索引的数组。

最终指数=行内总元素数-当前指数-1

示例:

输入:

[[1,2,3,4,2],

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

[2,2,4,3,2],

[1,3,4,2,4]]

输出:

[4 0 4 3]

解释: 在上面的例子中,我们试图以反向顺序找到’2’的第一次出现的索引,我们在每一行有5个元素,在向后索引后,我们得到一个像[0, 4, 0, 1]的数组,现在使用我们上面的公式。

final_list[0] => Total Elements In Rows – Current Index- 1 => 5-0-1 =>4

final_list[1] => Total Elements In Rows – Current Index- 1 => 5-4-1 =>0

final_list[2] => Total Elements In Rows – Current Index- 1 => 5-0-1 =>4

final_list[3] => Total Elements In Rows – Current Index- 1 => 5-1-1 =>3

示例 1:

#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)  

输出:

[4 0 4 3]

示例 2:

上述方法对字符串也可以适用。在下面的例子中,我们试图按照相反的顺序找到 “Sam “的第一次出现的索引。

#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)  

输出:

[0 1 2 ]

示例 3:

对于布尔数据,我们有同样的方法,但由于它只有0或1作为值,我们可以使用argmax(),它将找到最高值的索引(对于每行的轴=1)。由于True等同于1,False等同于0,它将记录第一个True值的索引。

# 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)  

输出:

[3 2 3 3]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程