6.12 Transformations
procedure
(array-transform arr ds proc) → (Array A)
arr : (Array A) ds : In-Indexes proc : (Indexes -> In-Indexes)
> (define arr (array #[#[0 1] #[2 'three]]))
> (array-transform arr #(3 3) (λ: ([js : Indexes]) #(1 1))) - : (Array (U Byte 'three))
(array
#[#['three 'three 'three]
#['three 'three 'three]
#['three 'three 'three]])
> (define arr (index-array #(3 3)))
> arr - : (Array Index)
(array #[#[0 1 2] #[3 4 5] #[6 7 8]])
> (array-transform arr (vector-map (λ: ([d : Index]) (* d 2)) (array-shape arr)) (λ: ([js : Indexes]) (vector-map (λ: ([j : Index]) (quotient j 2)) js))) - : (Array Index)
(array
#[#[0 0 1 1 2 2]
#[0 0 1 1 2 2]
#[3 3 4 4 5 5]
#[3 3 4 4 5 5]
#[6 6 7 7 8 8]
#[6 6 7 7 8 8]])
Almost all array transformations, including Slicing, are implemented using array-transform or its unsafe counterpart.
procedure
(array-append* arrs [k]) → (Array A)
arrs : (Listof (Array A)) k : Integer = 0
Examples: | |||||||||||||||
|
procedure
(array-axis-insert arr k [dk]) → (Array A)
arr : (Array A) k : Integer dk : Integer = 1
Examples: | |||||||||||||||
|
procedure
(array-axis-ref arr k jk) → (Array A)
arr : (Array A) k : Integer jk : Integer
Examples: | ||||||||||||
|
procedure
(array-axis-swap arr k0 k1) → (Array A)
arr : (Array A) k0 : Integer k1 : Integer
Examples: | ||||||||||||||||||||||||||||||
|
procedure
(array-axis-permute arr perm) → (Array A)
arr : (Array A) perm : (Listof Integer)
The list perm represents a mapping from source axis numbers to destination axis numbers: the source is the list position, the destination is the list element. For example, the permutation '(0 1 2) is the identity permutation for three-dimensional arrays, '(1 0) swaps axes 0 and 1, and '(3 1 2 0) swaps axes 0 and 3.
The permutation must contain each integer from 0 to (- (array-dims arr) 1) exactly once.
Examples: | ||||||
|
procedure
(array-reshape arr ds) → (Array A)
arr : (Array A) ds : In-Indexes
Examples: | ||||||||||||
|
procedure
(array-flatten arr) → (Array A)
arr : (Array A)
Examples: | ||||||
|