#python #numba
#python #numba
Вопрос:
Я не смог найти, как это сделать. Рассмотрим этот dict:
this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)
Я в @numba.jit(nopython = True)
деле . Я пытаюсь суммировать значения этого dict . Но я получаю:
TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'sum': cannot determine Numba type of <class 'builtin_function_or_method'>
File "trial.py", line 163:
def strat_1(bid_price, ask_price, deal_size, deal_price, posture, post_update, is_out, num_ticks, tick_size, point_value):
<source elided>
BBB[i] = sum(this_size.values())
Ответ №1:
Редактировать: sum
теперь поддерживается с версии Numba 0.54! (примечания к выпуску, PR)
Похоже sum
, его нет в списке поддерживаемых встроенных функций (начиная с версии Numba 0.51.2). Прямо сейчас Numba поддерживает растущее, но все еще довольно ограниченное подмножество ванильного Python и NumPy.
Numba поддерживает np.sum
, хотя я не смог убедить его принимать значения вашего словаря (это может сработать с немного большей доработкой). Единственный способ, которым я получил его для компиляции, — это откат ванильного цикла for:
import numba
import numpy as np
this_size = numba.typed.Dict.empty(key_type=numba.types.float64, value_type=numba.types.float64)
@numba.njit
def my_sum(d):
total = 0.0
for val in d.values():
total = val
return total
print(my_sum(this_size))