#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. Я не думаю, что что-то происходит, кроме того, что ваши данные слишком велики и могут возникнуть проблемы с памятью, не обязательно проблемы с процессором