Tenga en cuenta que, como muestra perimosocordiae , a partir de la versión 1.9 de NumPy, np.linalg.norm(x, axis=1)es la forma más rápida de calcular la norma L2.
Si está calculando una norma L2, podría calcularla directamente (usando el axis=-1argumento para sumar filas):
np.sum(np.abs(x)**2,axis=-1)**(1./2)
Por supuesto, las normas Lp se pueden calcular de manera similar.
Es considerablemente más rápido que np.apply_along_axis, aunque quizás no tan conveniente:
In [48]: %timeit np.apply_along_axis(np.linalg.norm, 1, x)
1000 loops, best of 3: 208 us per loop
In [49]: %timeit np.sum(np.abs(x)**2,axis=-1)**(1./2)
100000 loops, best of 3: 18.3 us per loop
También se pueden calcular directamente otras ordformas de norm(con aceleraciones similares):
In [55]: %timeit np.apply_along_axis(lambda row:np.linalg.norm(row,ord=1), 1, x)
1000 loops, best of 3: 203 us per loop
In [54]: %timeit np.sum(abs(x), axis=-1)
100000 loops, best of 3: 10.9 us per loop