thanks. I hadn't seen it.

anyway, from very rough benchmarks I did, the quickest and easiest way of
computing the euclidean norm of a 1D array is:
n = sqrt(dot(x,x.conj()))
much faster than:
n = sqrt(sum(abs(x)**2))
and much much faster than:
n = scipy.linalg.norm(x)

regards,
lorenzo.


On 3/14/07, Bill Baxter <[EMAIL PROTECTED]> wrote:

There is numpy.linalg.norm.

Here's what it does:

def norm(x, ord=None):
   x = asarray(x)
   nd = len(x.shape)
   if ord is None: # check the default case first and handle it
immediately
       return sqrt(add.reduce((x.conj() * x).ravel().real))
   if nd == 1:
       if ord == Inf:
           return abs(x).max()
       elif ord == -Inf:
           return abs(x).min()
       elif ord == 1:
           return abs(x).sum() # special case for speedup
       elif ord == 2:
           return sqrt(((x.conj()*x).real).sum()) # special case for
speedup
       else:
           return ((abs(x)**ord).sum())**(1.0/ord)
   elif nd == 2:
       if ord == 2:
           return svd(x, compute_uv=0).max()
       elif ord == -2:
           return svd(x, compute_uv=0).min()
       elif ord == 1:
           return abs(x).sum(axis=0).max()
       elif ord == Inf:
           return abs(x).sum(axis=1).max()
       elif ord == -1:
           return abs(x).sum(axis=0).min()
       elif ord == -Inf:
           return abs(x).sum(axis=1).min()
       elif ord in ['fro','f']:
           return sqrt(add.reduce((x.conj() * x).real.ravel()))
       else:
           raise ValueError, "Invalid norm order for matrices."
   else:
       raise ValueError, "Improper number of dimensions to norm."



--bb



On 3/14/07, lorenzo bolla <[EMAIL PROTECTED]> wrote:
> Hi all,
> just a quick (and easy?) question.
> what is the best (fastest) way to implement the euclidean norm of a
vector,
> i.e. the function:
>
> import scipy as S
> def norm(x):
>    """normalize a vector."""
>    return S.sqrt(S.sum(S.absolute(x)**2))
>
> ?
>
> thanks in advance,
> Lorenzo.
> _______________________________________________
> Numpy-discussion mailing list
> [email protected]
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>
_______________________________________________
Numpy-discussion mailing list
[email protected]
http://projects.scipy.org/mailman/listinfo/numpy-discussion

_______________________________________________
Numpy-discussion mailing list
[email protected]
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to