Нумик должен быть быстрым. Однако при сравнении Numpy ufuncs со стандартными функциями Python я обнаружил, что последние намного быстрее.Являются ли функции Numpy медленными?
Например,
aa = np.arange(1000000, dtype = float)
%timeit np.mean(aa) # 1000 loops, best of 3: 1.15 ms per loop
%timeit aa.mean # 10000000 loops, best of 3: 69.5 ns per loop
Я получил аналогичные результаты с другими функциями Numpy как макс, мощности. У меня создалось впечатление, что у Numpy есть накладные расходы, что делает его медленнее для небольших массивов, но будет быстрее для больших массивов. В коде выше aa не мало: он имеет 1 миллион элементов. Я что-то упускаю?
Конечно, Numpy быстро, только функции, как представляется, медленно:
bb = range(1000000)
%timeit mean(bb) # 1 loops, best of 3: 551 ms per loop
%timeit mean(list(bb)) # 10 loops, best of 3: 136 ms per loop
Какую версию Python вы используете? В Python 2 'range()' возвращает список.В Python 3 'range()' возвращает итератор. Это окажет огромное влияние на ваши измерения производительности. –
'np.mean (aa)' и 'aa.mean' кажутся одинаковой функцией. –
FYI, 'aa.mean' ничего не делает. Вы не называете эту функцию, вы ее называете. Вот почему это так быстро. IOW, вам нужно 'aa.mean()'. – DSM