擅长:python、mysql、java
<p>由于numpy更新而复活旧问题。从1.9版本开始,<code>numpy.linalg.norm</code>现在接受一个<code>axis</code>参数。[<a href="https://github.com/numpy/numpy/pull/3387">code</a>,<a href="http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.linalg.norm.html">documentation</a>]</p>
<p>这是城里最快的新方法:</p>
<pre><code>In [10]: x = np.random.random((500,500))
In [11]: %timeit np.apply_along_axis(np.linalg.norm, 1, x)
10 loops, best of 3: 21 ms per loop
In [12]: %timeit np.sum(np.abs(x)**2,axis=-1)**(1./2)
100 loops, best of 3: 2.6 ms per loop
In [13]: %timeit np.linalg.norm(x, axis=1)
1000 loops, best of 3: 1.4 ms per loop
</code></pre>
<p>为了证明它在计算同样的东西:</p>
<pre><code>In [14]: np.allclose(np.linalg.norm(x, axis=1), np.sum(np.abs(x)**2,axis=-1)**(1./2))
Out[14]: True
</code></pre>