Python/numpy array search

来自菜鸟教程
跳转至:导航、​搜索

<languages />

NumPy搜索数组

搜索数组

您可以在数组中搜索某个值,然后返回获得匹配的索引。

要搜索数组,请使用 where() 方法。

查找值为4的索引:

  import numpy as np

arr = np.array([1, 2, 3, 4, 5, 4, 4])


  x =
  np.where(arr == 4)

print(x)

上面的示例将返回一个元组: (array([3, 5, 6],)

这意味着值4出现在索引3、5和6处。

查找值相等的索引:

  import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])


  x =
  np.where(arr%2 == 0)

print(x)

查找值奇数的索引:

  import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])


  x =
  np.where(arr%2 == 1)

print(x)

搜索排序

有一个叫做的方法 searchsorted() 它会在数组中执行二进制搜索,并返回将在其中插入指定值以维持搜索顺序的索引。

The searchsorted() 假定该方法用于排序数组。


找到应该插入值7的索引:

  import numpy as np

arr = np.array([6, 
  7, 8, 9])


  x =
  np.searchsorted(arr, 7)

print(x)

解释的示例:应该在索引1上插入数字7,以保持排序顺序。

该方法从左侧开始搜索,并返回第一个索引,其中数字7不再大于下一个值。

从右侧搜索

默认情况下,返回最左边的索引,但是我们可以给 side='right' 返回最右边的索引。

从右边开始找到应该插入值7的索引:

  import numpy as np

arr = np.array([6, 
  7, 8, 9])


  x =
  np.searchsorted(arr, 7, side='right')

print(x)

解释的示例:应该在索引2上插入数字7,以保持排序顺序。

该方法从右侧开始搜索,并返回第一个索引,其中数字7不再小于下一个值。

多个值

要搜索多个值,请使用具有指定值的数组。

查找应在其中插入值2、4和6的索引:

  import numpy as np

arr = np.array([1, 
  3, 5, 7])


  x =
  np.searchsorted(arr, [2, 4, 6])

print(x)

返回值是一个数组: [1 2 3] 包含三个索引,其中将在原始数组中插入2、4、6以维持顺序。