📜  从 2 维数组中搜索值 (1)

📅  最后修改于: 2023-12-03 15:06:30.129000             🧑  作者: Mango

从 2 维数组中搜索值

在编写程序时,我们有时需要从二维数组中查找特定值。这种情况经常出现,特别是在处理图像,矩阵和表格等数据结构时。本文将介绍几种方法,通过这些方法可以帮助我们在二维数组中查找特定值。

方法1: 逐行搜索

我们可以使用一个双重for循环来逐行搜索。假设我们要查找的值为x,arr是一个n×m的二维数组。我们可以这样写代码:

def search_value(arr, x):
    for i in range(n):
        for j in range(m):
            if arr[i][j] == x:
                return i, j
    return -1, -1

这段代码将返回x在数组中的行和列位置。如果找不到,函数将返回一个特殊的-1,-1。

方法2: 使用二分搜索

如果数组是有序的,我们可以使用二分搜索来查找值。这个方法的速度更快,但前提条件是数组必须是有序的。假设我们要查找的值为x,arr是一个n×m的二维数组。我们可以这样写代码:

def binary_search(arr, x):
    n, m = len(arr), len(arr[0])
    for i in range(n):
        low, high = 0, m-1
        while low <= high:
            mid = (low + high) // 2
            if arr[i][mid] == x:
                return i, mid
            elif arr[i][mid] < x:
                low = mid + 1
            else:
                high = mid - 1
    return -1, -1

这段代码将返回x在数组中的行和列位置。如果找不到,函数将返回一个特殊的-1,-1。

方法3: 使用numpy

如果你正在处理图像或矩阵,你可以使用numpy库。numpy库提供了一个非常方便的方法来查找二维数组中的值。假设我们有以下的二维数组:

import numpy as np

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

我们可以这样查找数组中的值:

def numpy_search(arr, x):
    index = np.argwhere(arr == x)
    if len(index) == 0:
        return -1, -1
    return index[0][0], index[0][1]

这段代码将返回x在数组中的行和列位置。如果找不到,函数将返回一个特殊的-1,-1。

总结

这篇文章介绍了三种方法来在二维数组中搜索值。第一种方法是逐行搜索,适用于任意类型的数组。第二种方法是使用二分搜索,适用于有序数组。第三种方法是使用numpy库,适用于处理图像和矩阵等数据结构。根据你的需要选择不同的方法来处理问题。