numir.core.manipulation
Various slice manipulation (e.g., concatenate, squeeze, resize, alongDim)
-
Declaration
pure autoconcatenate(int axis = 0, Slices...)(Slicesslices);Join multiple
along anslicesaxis.Parameters
axisdimension of concatenation
Slicesslicesslicesto concatentateReturn Value
concatenated
slicesExamples
import mir.ndslice.fuse : fuse; import mir.ndslice.topology : universal; import mir.ndslice.dynamic : transposed; auto m = fuse([[1, 2],[3, 4]]); auto u = fuse([[5, 6]]); assert(concatenate(m, u) == [[1, 2], [3, 4], [5, 6]]); assert(concatenate(u, m) == [[5, 6], [1, 2], [3, 4]]); auto uT = u.universal.transposed; assert(concatenate!1(m, uT) == [[1, 2, 5], [3, 4, 6]]);
Examples
import mir.ndslice.fuse : fuse; import mir.ndslice.topology : iota; assert(concatenate!0([[0, 1]].fuse, [[2, 3]].fuse, [[4, 5]].fuse) == iota(3, 2)); assert(concatenate!1([[0, 1]].fuse, [[2, 3]].fuse, [[4, 5]].fuse) == [iota(6)]); // axis=-1 is the same to axis=$-1 assert(concatenate!(-1)([[0, 1]].fuse, [[2, 3]].fuse, [[4, 5]].fuse) == [iota(6)]); assert(concatenate!(-1)([[0, 1]].fuse, [[2]].fuse) == [[0, 1, 2]]);
-
Declaration
pure autoresize(S)(Ss, size_tsize) if (isSlice!S);Returns a resized n-dimensional slice
with newssize. When newsizeis larger, new slice is padded with 0. When newsizeis smaller, new slice is just a subslice of.sParameters
Ssn-dimensional slice
size_tsizenew
sizeofsReturn Value
new slice with new length
TODO: support n-dimensional new shape
Examples
import mir.ndslice.fuse : fuse; import mir.ndslice.slice : sliced; assert([1,2].sliced.resize(3) == [1, 2, 0]); assert([1,2].sliced.resize(2) == [1, 2]); assert([1,2].sliced.resize(1) == [1]); assert([[1,2],[3,4]].fuse.resize(3) == [[1,2], [3,4], [0,0]]); assert([[1,2],[3,4]].fuse.resize(2) == [[1,2], [3,4]]); assert([[1,2],[3,4]].fuse.resize(1) == [[1,2]]); assert([1,2].sliced.resize(0) == [].sliced!int); assert([].sliced!int.resize(3) == [0,0,0]);