np.quantile работает очень медленно на 3D-массивах

#python #arrays #numpy #cpu-cores

#python #массивы #numpy #процессорные ядра

Вопрос:

Я пытаюсь вычислить квантиль .95 по 3-му измерению 3D-массива NumPy, используя функцию квантиля NumPy. Я обнаружил, что вычисления занимают очень много времени и создают серьезное узкое место в моем анализе. Следующий код, похоже, воспроизводит длительные вычисления, с которыми я сталкиваюсь:

 import numpy as np

arr = np.random.normal(1, 3, size=(2000, 2000,200))

quants_95 = np.quantile(arr, q = .95, axis = 2)

 

Возможно, одна из причин, по которой это кажется намного медленнее, чем в остальной части моего анализа, заключается в том, что np.quantile, похоже, работает на одном ядре, тогда как другие функции numpy (такие как np.correff) по умолчанию выполняются на нескольких ядрах. Кто-нибудь знает способ запуска np.quantile на нескольких ядрах или аналогичную функцию, которая это делает?

Комментарии:

1. Вы можете либо написать его самостоятельно, multiprocessing либо попытаться использовать numba .

2. Я не думаю, что что-то происходит, кроме того, что ваши данные слишком велики и могут возникнуть проблемы с памятью, не обязательно проблемы с процессором