有没有更快的方法搜索numpy数组

3 投票
1 回答
10862 浏览
提问于 2025-04-18 15:30

我有一个大约有3125000个条目的numpy数组,这些数据是用以下的dtype结构化的。

dt = np.dtype([('startPoint', '<u8' ), ('endPoint', '<u8')])

这些数据来自一个文件,在读入数组之前,文件已经按照endPoint进行了排序。

现在我需要在这个数组中查找一个特定的endPoint,我是通过二分查找来实现的,使用了以下代码。

def binarySearch(array, index):
lowPoint = 0
highpoint = len(array) - 1


while (lowPoint <= highpoint):
    midPoint = int((lowPoint + highpoint) / 2)

    if(index == array[midPoint]['endPoint']):
        return midPoint

    elif(index < array[midPoint]['endPoint']):
        highpoint = midPoint - 1

    else:
        lowPoint = midPoint + 1

return -1

我的问题是,是否有更快的方法来在这个数组中查找一个条目。也就是说,Numpy中是否有内置的搜索功能,比我的二分查找更快。

1 个回答

6

可以试试 numpy.searchsorted,如果你的数组太大了,还可以使用 内存映射。searchsorted 是通过二分查找来实现的。

撰写回答