# [Numpy-discussion] What is diagonal for nd>2?

Sasha ndarray at mac.com
Thu Apr 6 12:42:17 CDT 2006

```It looks like the definition of the diagonal changed somewhere between
Numeric 24.0 and numpy:

In Numeric:

>>> x = Numeric.arange(2*4*4)
>>> x = Numeric.reshape(x, (2, 4, 4))
>>> x
array([[[ 0,  1,  2,  3],
[ 4,  5,  6,  7],
[ 8,  9, 10, 11],
[12, 13, 14, 15]],
[[16, 17, 18, 19],
[20, 21, 22, 23],
[24, 25, 26, 27],
[28, 29, 30, 31]]])
>>> Numeric.diagonal(x)
array([[ 0,  5, 10, 15],
[16, 21, 26, 31]])

But in numpy:

>>> import numpy as Numeric
>>> x = Numeric.arange(2*4*4)
>>> x = Numeric.reshape(x, (2, 4, 4))
>>> Numeric.diagonal(x)
array([[ 0, 20],
[ 1, 21],
[ 2, 22],
[ 3, 23]])

The old logic seems to be clear: x is a pair of matrices and diagonal
returns a pair of diagonals, but the new logic seems unclear: the disagonal
returns the first rows of the two matrices transposed.

Does anyone know when this change was introduced and why?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20060406/484624d2/attachment.html
```