[SciPy-user] why does linalg.sqrtm return an array?

Robert Kern robert.kern@gmail....
Thu Oct 9 18:34:40 CDT 2008

On Thu, Oct 9, 2008 at 13:26, Brian Blais <bblais@bryant.edu> wrote:
> Hello,
> I was just bitten by the fact that sqrtm returns an array, not a matrix.
>  Every time I tried to test it with Q*Q, or Q.T*Q I got very strange results
> (I was just about to post that it was seriously broken).  Then I found out
> that it returns an array!  Why is that?  It would seem that if you are doing
> a matrix square root, you are working with matrices mostly in that
> calculation, so a matrix is the consistent thing to return (and perhaps the
> least surprising thing to return).  Is there a reason for this?

Arguably, it should return a matrix object if given a matrix object,
but it should never return a matrix object if given a pure ndarray.
Just because one is doing matrix operations doesn't mean one wants to
use matrix objects.

But the fact that it returns an ndarray when given a matrix object is
a bug, and you're welcome to fix it. It's not always easy to do,
though, so you will find many such functions which do not preserve the
type of the input(s).

Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco

More information about the SciPy-user mailing list