Why does Transpose[m, {1, 1}] give the diagonal of m?

*To*: mathgroup at christensen.cybernetics.net*Subject*: [mg1859] Why does Transpose[m, {1, 1}] give the diagonal of m?*From*: drc at gate.net (David Cabana)*Date*: Wed, 9 Aug 1995 22:37:45 -0400

In a recent article in the thread Re: [mg1741] RealDigits, Roman Maeder explains one way to test whether a matrix is diagonal: >even faster and certainly simpler: >dQ[m_?MatrixQ] /; SameQ @@ Dimensions[m] := > m == DiagonalMatrix[Transpose[m, {1, 1}]] >(note: Transpose[m, {1, 1}] returns the list of diagonal elements.) An elegant test. My question: why does Transpose[m, {1, 1}] return the list of diagonal elements? Looking under Transpose in Wolfram's Mathematica Reference Guide (an appendix to Mathematica, 2nd ed.), I find: >Transpose[list, {n1,n2, ...}] transposes list so that the kth level >in list is the nkth level in the result. I expected Depth[Transpose[list, {n1,n2, ...}]] to be the same as Depth[list]. I expected Transpose to swap levels; I did not expect it to throw any away. Evidently I am laboring under some misconception. Can someone explain what is going on? -- David Cabana drc at gate.net