Как я могу ускорить numpy макс (ось = 1)? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть матрица (numpy массив) формы ~ (30000, 2000).

Я пытаюсь получить максимальное значение каждой строки этой матрицы. Что я делаю:

(matrix).max(axis=1)

Это работает, как ожидалось, но как мне ускорить эти вычисления?

Мне приходится проделывать это несколько раз в моей программе, и это вычисление занимает большую часть времени выполнения. Просто чтобы получить представление, это результат профилирования для выполнения этой операции 20x (с использованием cProfile):

ncalls  tottime  percall  cumtime  percall   filename:lineno(function)
 20      0.000    0.000    0.580    0.029     {method 'max' of 'numpy.ndarray' objects}
 24      0.580    0.024    0.580    0.024     {method 'reduce' of 'numpy.ufunc' objects}

Эта {method 'reduce' of 'numpy.ufunc' objects} - это часть, которая на самом деле занимает больше всего времени. Но когда я удаляю операцию max, это тоже исчезает.

Есть идеи, как ускорить эту максимальную операцию (по оси = 1)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...