[Numpy-discussion] Question about numpy.max(<complex matrix>)

Stuart Brorson sdb at cloud9.net
Fri Sep 21 14:49:23 EDT 2007


Hi guys,

As a NumPy newbie, I am still learning things about NumPy which I didn't
expect.  Today I learned that for a matrix of complex numbers,
numpy.max() returns the element with the largest *real* part, not the
element with the largest *magnitude*.

Is this the desired behavior?

Here's an example:

------------------  <session log>  -----------------
>>> a = numpy.array([ [1+1j, 1+2j], [2+1j, 1.9+1.9j] ])
>>> a
array([[ 1. +1.j ,  1. +2.j ],
        [ 2. +1.j ,  1.9+1.9j]])
>>> numpy.max(a)
(2+1j)
>>> math.sqrt(2**2 + 1**2)
2.2360679774997898
>>> math.sqrt(1.9**2 + 1.9**2)
2.6870057685088806
------------------  </session log>  -----------------

FWIW, Matlab does this:

---------------------  <matlab>  -------------------
>> a = [ 1+1*i, 1+2*i; 2+1*i, 1.9+1.9*i ]

a =

    1.0000 + 1.0000i   1.0000 + 2.0000i
    2.0000 + 1.0000i   1.9000 + 1.9000i

>> max(a)

ans =

    2.0000 + 1.0000i   1.9000 + 1.9000i

>> max(max(a))

ans =

    1.9000 + 1.9000i
-------------------  </matlab>  ------------------

Do I misunderstand what NumPy is supposed to return?  Should NumPy
even necessarily do the same thing as Matlab?  Or does this resemble 
a bug?

Cheers,

Stuart



More information about the NumPy-Discussion mailing list