📜  在 NumPy 数组中搜索

📅  最后修改于: 2022-05-13 01:54:38.592000             🧑  作者: Mango

在 NumPy 数组中搜索

Numpy 提供了多种方法来搜索不同种类的数值,在本文中,我们将介绍两个重要的方法。

  • numpy.where()
  • numpy.searchsorted()

1. numpy.where:()它返回满足给定条件的输入数组中元素的索引。

以下示例演示了如何使用where()进行搜索。

Python3
# importing the module
import numpy as np
  
# creating the array
arr = np.array([10, 32, 30, 50, 20, 82, 91, 45])
  
#  printing arr
print("arr = {}".format(arr))
  
#  looking for value 30 in arr and storing its index in i
i = np.where(arr == 30)
print("i = {}".format(i))


Python3
# importing the module
import numpy as np
  
# creating the array
arr = [1, 2, 2, 3, 3, 3, 4, 5, 6, 6]
print("arr = {}".format(arr))
  
# left-most 3
print("left-most index = {}".format(np.searchsorted(arr, 3, side="left")))
  
# right-most 3
print("right-most index = {}".format(np.searchsorted(arr, 3, side="right")))


输出:

arr = [10 32 30 50 20 82 91 45]
i = (array([2], dtype=int64),)

如您所见,变量 i 是一个可迭代对象,其搜索值的索引作为第一个元素。我们可以通过将最后一个打印语句替换为

print("i = {}".format(i[0]))

这会将最终输出更改为

arr = [10 32 30 50 20 82 91 45]
i = [2]

2. numpy.searchsorted():该函数用于在排序数组 arr 中查找索引,这样,如果在索引之前插入元素,则 arr 的顺序仍将保留。在这里,使用二分搜索来查找所需的插入索引。

以下示例解释了searchsorted()的使用。

蟒蛇3

# importing the module
import numpy as np
  
# creating the array
arr = [1, 2, 2, 3, 3, 3, 4, 5, 6, 6]
print("arr = {}".format(arr))
  
# left-most 3
print("left-most index = {}".format(np.searchsorted(arr, 3, side="left")))
  
# right-most 3
print("right-most index = {}".format(np.searchsorted(arr, 3, side="right")))

输出:

arr = [1, 2, 2, 3, 3, 3, 4, 5, 6, 6]
left-most index = 3
right-most index = 6