Вызов метода на дату / время

Базовое и не очень обширное тестирование, сравнивающее время выполнения пяти предоставленных ответов:

def numpyIndexValues(a, b):
    na = np.array(a)
    nb = np.array(b)
    out = list(na[nb])
    return out

def mapIndexValues(a, b):
    out = map(a.__getitem__, b)
    return list(out)

def getIndexValues(a, b):
    out = operator.itemgetter(*b)(a)
    return out

def pythonLoopOverlap(a, b):
    c = [ a[i] for i in b]
    return c

multipleListItemValues = lambda searchList, ind: [searchList[i] for i in ind]

с использованием следующего ввода:

a = range(0, 10000000)
b = range(500, 500000)

простой цикл питона был самым быстрым с лямбда-операцией, близкой секунде, mapIndexValues ​​и getIndexValues ​​были последовательно похожи на метод numpy значительно медленнее после преобразования списков в массивы numpy. Если данные уже находятся в массивах numpy, метод numpyIndexValues ​​с удалением numpy.array удаляется быстрее.

numpyIndexValues -> time:1.38940598 (when converted the lists to numpy arrays)
numpyIndexValues -> time:0.0193445 (using numpy array instead of python list as input, and conversion code removed)
mapIndexValues -> time:0.06477512099999999
getIndexValues -> time:0.06391049500000001
multipleListItemValues -> time:0.043773591
pythonLoopOverlap -> time:0.043021754999999995
2
задан YCF_L 6 March 2019 в 09:04
поделиться