В настоящее время я изучаю использование Numba для ускорения работы моего программного обеспечения на python. Я совершенно новичок в этой концепции и в настоящее время пытаюсь изучить абсолютные основы. То, на чем я застрял сейчас:
Я не понимаю, в чем большая польза от векторизованного декоратора .
Документация объясняет, что декоратор используется для превращения обычной функции python в Numpy ufunc. Из того, что я понимаю, преимущество ufunc заключается в том, что он может принимать массивы (вместо скаляров) и предоставлять такие функции, как широковещание.
Но все примеры, которые я могу найти в Интернете, могут быть так же легко решены без этого декоратора.
Взять, к примеру, этот пример из документации по numba.
@vectorize([float64(float64, float64)])
def f(x, y):
return x + y
Они утверждают, что теперь функция работает как numpy ufunc. Но разве это не так, даже без декоратора? Если бы я просто запустил следующий код:
def f(x,y):
return x+y
x = np.arange(10)
y = np.arange(10)
print(f(x,y))
Это работает так же хорошо. Функция уже принимает аргументы типа, отличного от скаляров.
Что я тут недопонимаю?