Ошибка при использовании 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)

0 ответов

Другие вопросы по тегам