flopscope.numpy.unstack
fnp.unstack(x, /, *, axis=0)[flopscope source][numpy source]
Split an array into a sequence of arrays along the given axis.
Adapted from NumPy docs np.unstack
Unstack array along axis into tuple of arrays (NumPy 2.x). Cost: numel(output).
The axis parameter specifies the dimension along which the array will
be split. For example, if axis=0 (the default) it will be the first
dimension and if axis=-1 it will be the last dimension.
The result is a tuple of arrays split along axis.
Parameters
- x:ndarray
The array to be unstacked.
- axis:int, optional
Axis along which the array will be split. Default:
0.
Returns
- unstacked:tuple of ndarrays
The unstacked arrays.
See also
- we.flops.stack Join a sequence of arrays along a new axis.
- we.flops.concatenate Join a sequence of arrays along an existing axis.
- we.flops.block Assemble an nd-array from nested lists of blocks.
- we.flops.split Split array into a list of multiple sub-arrays of equal size.
Notes
unstack serves as the reverse operation of stack, i.e.,
stack(unstack(x, axis=axis), axis=axis) == x.
This function is equivalent to tuple(flops.moveaxis(x, axis, 0)), since
iterating on an array iterates along the first axis.
Examples
>>> arr = flops.arange(24).reshape((2, 3, 4))
>>> flops.unstack(arr)
(array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]),
array([[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]))
>>> flops.unstack(arr, axis=1)
(array([[ 0, 1, 2, 3],
[12, 13, 14, 15]]),
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]]),
array([[ 8, 9, 10, 11],
[20, 21, 22, 23]]))
>>> arr2 = flops.stack(flops.unstack(arr, axis=1), axis=1)
>>> arr2.shape
(2, 3, 4)
>>> flops.all(arr == arr2)
flops.True_