У меня около 40 тыс. Строк, и я хочу протестировать все виды комбинаций выбора в строках.Под отбором я подразумеваю логические маски.Количество масок / фильтров составляет около 250 мм.
Текущий упрощенный код:
np_arr = np.random.randint(1, 40000, 40000)
results = np.empty(250000000)
filters = np.random.randint(1, size=(250000000, 40000))
for i in range(250000000):
row_selection = np_arr[filters[i].astype(np.bool_)] # Select rows based on next filter
# Performing simple calculations such as sum, prod, count on selected rows and saving to result
results[i] = row_selection.sum() # Save simple calculation result to results array
Я пробовал Numba и Multiprocessing, но так как большая часть обработки находится в выборе фильтра, а невычисления, это не очень помогает.
Какой самый эффективный способ решить эту проблему?Есть ли способ распараллелить это?Насколько я вижу, мне нужно пройтись по каждому фильтру, чтобы затем индивидуально вычислить сумму, цену, количество и т. Д., Потому что я не могу применять фильтры параллельно (даже если вычисления после применения фильтров очень просты).
Ценю любые предложения по улучшению производительности / ускорению.