У меня есть матрица (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)?