ArrayTools - Maple Programming Help

Home : Support : Online Help : Programming : Low-level Manipulation : Matrices, Vectors, and Arrays : ArrayTools : ArrayTools/Permute

ArrayTools

 Permute
 permute dimensions of an Array
 PermuteInverse
 inverse permute dimensions of an Array

 Calling Sequence Permute(A, order) PermuteInverse(A, order)

Parameters

 A - Matrix, Vector, or Array order - list; permutation order

Description

 • The Permute command rearranges the dimensions of A. The second argument, order is a list containing a permutation of the positive integers from 1 to n, such that dimension k becomes dimension order[k]. For example, if A is 10x20x5x8 then B=Permute(A,[3,4,1,2]) is 5x8x10x20.
 • The PermuteInverse will produce an Array, B, such that Permute(B,order) will generate A.
 • Unlike ArrayTools:-Reshape, Permute preserves the indices of the input such that A[index]=B[permuted index]. However, the underlying order of the input must be changed for this to take place, and therefore Permute is much more expensive than Reshape for large Arrays.
 • There can be more dimensions in the output than the input.  Additional dimensions will be assumed to be singletons.
 • These functions are part of the ArrayTools package, so they can be used in the short form Permute(..) or PermuteInverse(..) only after executing the command with(ArrayTools). However, it can always be accessed through the long form of the command by using ArrayTools[Permute](..) or ArrayTools[PermuteInverse](..), respectively.

Examples

 > $\mathrm{with}\left(\mathrm{ArrayTools}\right):$
 > $A≔\mathrm{Permute}\left(\mathrm{Array}\left(\left[\left[a,b,c\right],\left[d,e,f\right]\right]\right),\left[2,1\right]\right)$
 ${A}{≔}\left[\begin{array}{cc}{a}& {d}\\ {b}& {e}\\ {c}& {f}\end{array}\right]$ (1)
 > $\mathrm{PermuteInverse}\left(A,\left[2,1\right]\right)$
 $\left[\begin{array}{ccc}{a}& {b}& {c}\\ {d}& {e}& {f}\end{array}\right]$ (2)