# Transpose

Transpose[list]

transposes the first two levels in list.

Transpose[list,{n1,n2,}]

transposes list so that the k level in list is the nk level in the result.

Transpose[list,mn]

transposes levels m and n in list, leaving all other levels unchanged.

Transpose[list,k]

cycles the levels in list k positions to the right.

# Examples

open allclose all

## Basic Examples(3)

Transpose a 3×3 numerical matrix:

Visualize the transposition operation:

Transpose a 2×3 symbolic matrix:

Use followed by tr to enter the transposition operator:

## Scope(13)

### Matrices(6)

Enter a matrix as a grid:

Transpose the matrix and format the result:

Transpose a row matrix into a column matrix:

Format the input and output:

Transpose the column matrix back into a row matrix:

Transposition of a vector leaves it unchanged:

Transpose leaves the identity matrix unchanged:

s is a sparse matrix:

Transpose[s] is also sparse:

The indices have, in effect, just been reversed:

Transpose a SymmetrizedArray object:

The result equals the negative of the original array, due to its antisymmetry:

Format a symbolic transpose in TraditionalForm:

### Arrays(7)

Transpose the first two levels of a rank-3 array, effectively transposing it as a matrix of vectors:

Transpose an array of depth 3 using different permutations:

Cycle levels of a depth-5 array two positions to the right:

Perform transpositions using TwoWayRule notation:

Perform transpositions using Cycles notation:

Transpose levels 2 and 3 of a depth-4 array:

The second and third dimensions have been exchanged:

Get the leading diagonal by transposing two identical levels:

## Applications(13)

### Matrix Decompositions(4)

is a random real matrix:

Find the QRDecomposition of :

is orthogonal, so its inverse is :

Reconstruct from the decomposition:

Compute the SchurDecomposition of a matrix :

The matrix is orthogonal, so its inverse is :

Reconstruct from the decomposition:

Compute the SingularValueDecomposition of a matrix :

The matrices and are orthogonal, so their inverses are their transposes:

Reconstruct from the decomposition:

Construct the singular value decomposition of , a random matrix:

First compute the eigensystem of :

The singular values are the square roots of the nonzero eigenvalues:

The matrix is a diagonal matrix of singular values with the same shape as :

The matrix has the eigenvectors as its columns:

The matrix has columns of the form for each of the nonzero eigenvalues:

Verify that and are orthogonal:

Verify the decomposition:

### Special Matrices(6)

A symmetric matrix obeys , an antisymmetric matrix . This matrix is symmetric:

Confirm with SymmetricMatrixQ:

This matrix is antisymmetric:

Confirm with AntisymmetricMatrixQ:

A matrix is orthogonal if . Check if the matrix is orthogonal:

Confirm that it is orthogonal using OrthogonalMatrixQ:

A real-valued symmetric matrix is orthogonally diagonalizable as , with diagonal and real valued and orthogonal. Verify that the following matrix is symmetric and then diagonalize it:

To diagonalize, first compute 's eigenvalues and place them in a diagonal matrix:

Next, compute the unit eigenvectors:

Then can be diagonalized with as previously, and :

A matrix is unitary if . Show that the matrix is unitary:

Confirm with UnitaryMatrixQ:

A real-valued matrix is called normal if . Normal matrices are the most general kind of matrix that can be unitarily diagonalized as with diagonal and unitary. All real symmetric matrices are normal because both sides of the equality are simply :

Show that the following matrix is normal and then diagonalize it:

Confirm using NormalMatrixQ:

A normal matrix like can be unitarily diagonalized using Eigensystem:

Unlike the case of a symmetric matrix, the diagonal matrix here is complex valued:

Normalizing the eigenvectors and putting them in columns gives a unitary matrix:

Confirm the diagonalization :

Show that real antisymmetric matrices and orthogonal matrices are normal and thus can be unitarily diagonalized. For orthogonal matrices, simply substitute in the definition to get the identity matrix on both sides:

For an antisymmetric matrix, both sides are simply :

Orthogonal matrices have eigenvalues that lie on the unit circle:

Antisymmetric matrices have pure imaginary eigenvalues:

### Visualization(3)

Use Transpose to change data grouping in BarChart:

Use Transpose to swap the and axes in ListPlot3D:

This has the effect of reflecting the data across the line :

Multidimensionalize (in the tensor product sense) a one-dimensional list command:

For example, accumulate at all levels of an array:

Reverse at all levels of an array:

Import an RGB image:

Reverse the data at all levels, reflecting across the line and swapping red and blue channels:

## Properties & Relations(18)

Transpose obeys :

For compatible matrices and , Transpose obeys :

Matrix inversion commutes with Transpose, i.e. :

Conjugate[Transpose[m]] can be done in a single step with ConjugateTranspose:

Many special matrices are defined by their properties under Transpose. A symmetric matrix has :

An orthogonal matrix satisfies :

The product of a matrix and its transpose is symmetric:

is the matrix product of and :

, so is symmetric

The sum of a square matrix and its transpose is symmetric:

is the matrix sum of and :

, so is symmetric:

The difference is antisymmetric:

Transposition of {{}} returns {}:

The result cannot be {{}} again because the permutation of the dimensions {1,0} is {0,1} and no expression can have dimensions {0,1}:

Transpose[a] transposes the first two levels of an array:

Transpose[a,perm] returns an array of dimensions Permute[Dimensions[a],perm]:

Take an array with dimensions {2,3,4}:

Transposing by a permutation σ transposes the element positions by σ-1:

Transpose[a,Cycles[{{m,n}}]] and Transpose[a,mn] are equivalent:

Both forms are equivalent to using PermutationList[Cycles[{{m,n}}]:

Composition of transpositions is equivalent to a product of their permutations, in the same order:

Transpositions do not commute, in general:

Transpose[a,σ] is equivalent to Flatten[a,List/@InversePermutation[σ]]:

Transpose and TensorTranspose coincide on explicit arrays:

TensorTranspose further supports symbolic operations that Transpose does not:

Transposition of a matrix can also be performed with Thread:

Transpose[m,{1,1}] is equivalent to Diagonal[m]:

Transpose[a,{1,,1,2,3,}] is equivalent to tracing the levels being transposed to level 1:

## Possible Issues(1)

Transpose only works for rectangular arrays:

Generalize transposition by padding:

## Neat Examples(1)

Wolfram Research (1988), Transpose, Wolfram Language function, https://reference.wolfram.com/language/ref/Transpose.html (updated 2024).

#### Text

Wolfram Research (1988), Transpose, Wolfram Language function, https://reference.wolfram.com/language/ref/Transpose.html (updated 2024).

#### CMS

Wolfram Language. 1988. "Transpose." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/Transpose.html.

#### APA

Wolfram Language. (1988). Transpose. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Transpose.html

#### BibTeX

@misc{reference.wolfram_2024_transpose, author="Wolfram Research", title="{Transpose}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Transpose.html}", note=[Accessed: 12-September-2024 ]}

#### BibLaTeX

@online{reference.wolfram_2024_transpose, organization={Wolfram Research}, title={Transpose}, year={2024}, url={https://reference.wolfram.com/language/ref/Transpose.html}, note=[Accessed: 12-September-2024 ]}