目录

Python 搜索数组


搜索数组

您可以在数组中搜索特定值,并返回匹配的索引。

要搜索数组,请使用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 以保持排序顺序。

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

从右侧搜索

默认情况下返回最左边的索引,但我们可以给出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 以保持排序顺序。

该方法从右侧开始搜索,并返回数字 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 将被插入到原始数组中以保持顺序。


通过练习测试一下

练习:

使用正确的 NumPy 方法查找值为 4 的所有项目。

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

x = np.(arr == 4)

开始练习