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

时间:2014-07-31 14:31:01

标签: python arrays python-2.7 numpy

我有一个大约3125000个条目的numpy数组,使用以下dtype

构建数据
dt = np.dtype([('startPoint', '<u8' ), ('endPoint', '<u8')])

数据来自先前已被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 个答案:

答案 0 :(得分:1)

尝试numpy.searchsorted,如果数组太大,也可以使用memory mapping。 searchsorted实现为二进制搜索。