Я не понимаю, когда функция numpy numpy.apply_along_axis ()
превосходит простую Цикл Python. Например, рассмотрим случай матрицы с множеством строк, и вы хотите вычислить сумму каждой строки:
x = np.ones([100000, 3])
sums1 = np.array([np.sum(x[i,:]) for i in range(x.shape[0])])
sums2 = np.apply_along_axis(np.sum, 1, x)
Здесь я даже использую встроенную функцию numpy, np.sum
и однако вычисление sums1
(цикл Python) занимает менее 400 мс, а вычисление sums2
( apply_along_axis
) занимает более 2000 мс (NumPy 1.6.1 в Windows). Для дальнейшего сравнения функция R rowMeans часто может сделать это менее чем за 20 мс (я почти уверен, что она вызывает код C), в то время как аналогичная функция R apply ()
может сделать это примерно за 600 мс.