Ошибка при использовании numba в цикле с if any и if all
Я выполняю оптимизацию по Парето типа min-min для набора данных (т.е. data1 в коде ниже) с 118800000 точками. Приведенный ниже код работает очень медленно, и я не смог получить никакого результата после его запуска в течение 6 часов. Я пытаюсь использовать numba для увеличения скорости. Но я получаю следующую ошибку. Как я могу переписать цикл или исправить ошибку, чтобы можно было использовать numba? Или есть подход получше?
ошибка
TypingError: сбой в конвейере режима nopython (шаг: интерфейс nopython) Нетипизированное глобальное имя 'all': невозможно определить тип Numba
Файл "", строка 8:
def identify_pareto(data1):
for j in range(population_size):
if all(data1[j] <= data1[i]) и any(data1[j] Обычно это не проблема самой Numba, а часто возникает из-за использования неподдерживаемых функций или проблемы с определением типов. Чтобы увидеть функции Python / NumPy, поддерживаемые последней версией Numba, посетите:http://numba.pydata.org/numba-doc/dev/reference/pysupported.html и http://numba.pydata.org/numba-doc/dev/reference/numpysupported.html Для получения дополнительных сведений об ошибках ввода и их отладке посетите:http://numba.pydata.org/numba-doc/latest/user/troubleshoot.html. Если вы считаете, что ваш код должен работать с Numba, сообщите об ошибке и трассировке вместе с минимальным репродуктором по адресу:https://github.com/numba/numba/issues/new Кодfrom numba import jit,float32
@jit(nopython=True)
def identify_pareto(data1):
population_size = data1.shape[0]
population_ids = np.arange(population_size)
pareto_front = np.ones(population_size, dtype=bool)
for i in range(population_size):
for j in range(population_size):
if all(data1[j] <= data1[i]) and any(data1[j] < data1[i]):
pareto_front[i] = 0
break
return population_ids[pareto_front]
pareto = identify_pareto(data1)