通过非常大的numpy数组排序

时间:2018-03-09 14:18:21

标签: python arrays

我是python(3.6)的新手,目前用于科学数据分析。我使用了搜索功能,但由于我不确定用于描述此类排序的术语,因此无法找到任何有用的信息。    我有一个numpy数组,其值从0到40,000,000,长度约为4,000,000(list_a)。我还有一个长度相同的第二个数组,其值介于0-1000(list_b)之间,对应于第一个数组。我希望用list_a中的值创建一个新的numpy数组(list_c),它们在list_b中的定义时间门之外具有相应的值。

import numpy as np
def function(list_a,list_b,timegate=(0,200)):
    list_c = np.array([])
    for x in range(len(list_a)):
        if list_a[x] in range (timegate[0],timegate[1]):
            list_c=np.append(list_c, list_b[x])
    return list_c

我编写了这个函数,它适用于更小的长度数组,但是随着数组变长,它会大大减慢。我正在寻找一种方法来加快这个过程,如果可能的话,任何帮助将不胜感激。

谢谢,

约旦

1 个答案:

答案 0 :(得分:0)

您可以轻松地对您的操作进行矢量化:

def function(a, b, gate=(0, 200)):
    return b[(a >= gate[0]) & (a <= gate[1])]