[Numpy-discussion] fixing diag() for matrices

Robert Kern robert.kern at gmail.com
Fri Jul 28 15:37:55 CDT 2006


Christopher Barker wrote:
> Keith Goodman wrote:
>> diag(NxN matrix) should return a Nx1 matrix
>> diag(Nx1 or 1xN matrix) should return a NxN matrix
> 
> This is the key problem: extracting the diagonal of a matrix and 
> creating a matrix from a diagonal are two different operations: 
> overloading one function to do both was a bad idea to begin with.
> 
> Maybe we should just keep diag() as is is for backward compatibility 
> (deprecated), and make:
> 
> get_diag() and make_diag() instead.
> 
> Then it would be unambiguous what you wanted with:
> 
> make_diag(<Nx1array>)
> 
> You can call them something else, but you get the idea.

As .diagonal() is a method on both arrays and matrices, we don't need a separate 
get_diag().

In the abstract, I heartily approve. However, I'm not sure that deprecation in 
favor of a clumsier name is going to be effective in practice. diag([a, b, c]) 
is just too tempting and will remain an attractive nuisance. It matches 
mathematical notation ever so nicely.

-- 
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 Numpy-discussion mailing list