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()
的方法,它在数组中执行二分搜索,并返回一个索引,该索引可以将指定值插入以维护搜索顺序。
假定 searchsorted()
方法用于已排序的数组。
示例
查找值 7 应插入的索引
import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7)
print(x)
自己动手试一试 »
示例说明:数字 7 应插入索引 1 处,以保持排序顺序。
该方法从左侧开始搜索,并返回第一个不再大于下一个值的索引。
从右侧搜索
默认情况下,返回最左边的索引,但我们可以通过指定 side='right'
来返回最右边的索引。
示例
查找值 7 应插入的索引,从右侧开始
import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7, side='right')
print(x)
自己动手试一试 »
示例说明:数字 7 应插入索引 2 处,以保持排序顺序。
该方法从右侧开始搜索,并返回第一个不再小于下一个值的索引。
多个值
要搜索多个值,请使用包含指定值的数组。
示例
查找值 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 在原始数组中插入以保持顺序的三个索引。