[Numpy-discussion] fixing diag() for matrices

Robert Kern robert.kern at gmail.com
Tue Jul 25 11:55:00 CDT 2006

Sven Schreiber wrote:
> Hi,
> there was a thread about this before, diag() is currently only
> partly useful if you work with numpy-matrices, because the 1d->2d
> direction doesn't work, as there are no 1d-numpy-matrices. This is
> unfortunate because a numpy-matrix with shape (n,1) or (1,m) should be
> naturally treated as a vector, imho. So it would be nice if this could
> be fixed.
> It's probably not the most efficient solution, but what I want for
> numpy-matrix input x is to get:
> mat(diag(x.A.squeeze))
> where diag is the current implementation. This means that if x is not a
> vector ("truly 2d"), then nothing is changed. But if one of the
> dimensions of x is ==1, then it's turned into a 1d-array, and diag works
> as it should.
> Does that sound reasonable?

Not for numpy.diag() in my opinion. However, I won't object to a 
numpy.matlib.diag() that knows about matrix objects and behaves the way you want.

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