transpose package:massiv

Transpose a 2-dimensional array

Examples

>>> import Data.Massiv.Array

>>> arr = makeArrayLinearR D Seq (Sz (2 :. 3)) id

>>> arr
Array D Seq (Sz (2 :. 3))
[ [ 0, 1, 2 ]
, [ 3, 4, 5 ]
]

>>> transpose arr
Array D Seq (Sz (3 :. 2))
[ [ 0, 3 ]
, [ 1, 4 ]
, [ 2, 5 ]
]
Transpose inner two dimensions of at least rank-2 array.

Examples

>>> import Data.Massiv.Array

>>> arr = makeArrayLinearR U Seq (Sz (2 :> 3 :. 4)) id

>>> arr
Array U Seq (Sz (2 :> 3 :. 4))
[ [ [ 0, 1, 2, 3 ]
, [ 4, 5, 6, 7 ]
, [ 8, 9, 10, 11 ]
]
, [ [ 12, 13, 14, 15 ]
, [ 16, 17, 18, 19 ]
, [ 20, 21, 22, 23 ]
]
]

>>> transposeInner arr
Array D Seq (Sz (3 :> 2 :. 4))
[ [ [ 0, 1, 2, 3 ]
, [ 12, 13, 14, 15 ]
]
, [ [ 4, 5, 6, 7 ]
, [ 16, 17, 18, 19 ]
]
, [ [ 8, 9, 10, 11 ]
, [ 20, 21, 22, 23 ]
]
]
Transpose outer two dimensions of at least rank-2 array.

Examples

>>> import Data.Massiv.Array

>>> :set -XTypeApplications

>>> arr = makeArrayLinear @U Seq (Sz (2 :> 3 :. 4)) id

>>> arr
Array U Seq (Sz (2 :> 3 :. 4))
[ [ [ 0, 1, 2, 3 ]
, [ 4, 5, 6, 7 ]
, [ 8, 9, 10, 11 ]
]
, [ [ 12, 13, 14, 15 ]
, [ 16, 17, 18, 19 ]
, [ 20, 21, 22, 23 ]
]
]

>>> transposeOuter arr
Array D Seq (Sz (2 :> 4 :. 3))
[ [ [ 0, 4, 8 ]
, [ 1, 5, 9 ]
, [ 2, 6, 10 ]
, [ 3, 7, 11 ]
]
, [ [ 12, 16, 20 ]
, [ 13, 17, 21 ]
, [ 14, 18, 22 ]
, [ 15, 19, 23 ]
]
]
Computes the matrix-matrix multiplication where second matrix is transposed (i.e. M x N')
m1 .><. transpose m2 == multiplyMatricesTransposed m1 m2