У меня есть функция, которая принимает массив из двух элементов в качестве входных данных.Теперь у меня есть большие данные (shape = (360000,2)) и я хочу оценить функцию в каждой точке, используя numpy.apply_along_axis.В одном из ответов, приведенных в этой теме ( функция numpy np.apply_along_axis ускоряется? ), говорится, что numpy.apply_along_axis не для скорости.Моя функция векторизована.Как я могу улучшить время эволюции для всех моих данных без использования jit / cython.
Я включу пример кода того, что я пытаюсь сделать, точно
import numpy as np
import random
def sample(x):
return np.sin(x[0])*np.cos(x[1])
data = np.random.normal(size=600*600*2)
data = data.reshape(600*600,2)
%timeit np.sum(np.apply_along_axis(sample, 1,data)) #using the apply_along_axis
def loop_way(): # using loop
result = []
for i in data:
result += [sample(i)]
return np.sum(result)
%timeit loop_way()
output when using np. apply_along_axis: 1 loop, best of 3: 4.06 s per loop
output for loop_way function: 1 loop, best of 3: 2.41 s per loop