Я новичок в Python (3.6) и в настоящее время использую его для анализа научных данных. Я воспользовался функцией поиска, но не смог найти ничего полезного, так как не уверен в терминах, используемых для описания этого типа сортировки. У меня есть массив numpy со значениями от 0 до ~ 40 000 000, длина которого составляет ~ 4 000 000 (list_a). У меня также есть второй массив такой же длины со значениями от 0 до 1000 (list_b), который соответствует первому массиву. Я хочу создать новый массив numpy (list_c) со значениями из list_a, которые имеют соответствующее значение в 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
У меня есть эта функция, которая работает для массивов гораздо меньшей длины, но по мере того, как массивы становятся длиннее, она значительно замедляется. Я ищу способ ускорить этот процесс, если возможно, любая помощь будет принята с благодарностью.
Спасибо,
Иордания






Вы можете легко векторизовать свою операцию:
def function(a, b, gate=(0, 200)):
return b[(a >= gate[0]) & (a <= gate[1])]
Это просто обозначение Big-Oh. Конечно, по мере того, как массивы становятся длиннее, он будет работать медленнее. Это физика. Единственный способ ускорить такой процесс - распараллелить его.