flopscope.numpy.stack
fnp.stack(arrays, axis=0, out=None, *, dtype=None, casting='same_kind')[flopscope source][numpy source]
Join a sequence of arrays along a new axis.
Adapted from NumPy docs np.stack
Join arrays along new axis. Cost: numel(output).
The axis parameter specifies the index of the new axis in the
dimensions of the result. For example, if axis=0 it will be the first
dimension and if axis=-1 it will be the last dimension.
Parameters
- arrays:sequence of ndarrays
Each array must have the same shape. In the case of a single ndarray array_like input, it will be treated as a sequence of arrays; i.e., each element along the zeroth axis is treated as a separate array.
- axis:int, optional
The axis in the result array along which the input arrays are stacked.
- out:ndarray, optional
If provided, the destination to place the result. The shape must be correct, matching that of what stack would have returned if no out argument were specified.
- dtype:str or dtype
If provided, the destination array will have this dtype. Cannot be provided together with
out.Added in version 1.24.- casting:{'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Defaults to 'same_kind'.
Added in version 1.24.
Returns
- stacked:ndarray
The stacked array has one more dimension than the input arrays.
See also
- 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.
- we.flops.unstack Split an array into a tuple of sub-arrays along an axis.
Examples
>>> import flopscope.numpy as fnp
>>> rng = flops.random.default_rng()
>>> arrays = [rng.normal(size=(3,4)) for _ in range(10)]
>>> flops.stack(arrays, axis=0).shape
(10, 3, 4)>>> flops.stack(arrays, axis=1).shape
(3, 10, 4)>>> flops.stack(arrays, axis=2).shape
(3, 4, 10)>>> a = flops.array([1, 2, 3])
>>> b = flops.array([4, 5, 6])
>>> flops.stack((a, b))
array([[1, 2, 3],
[4, 5, 6]])>>> flops.stack((a, b), axis=-1)
array([[1, 4],
[2, 5],
[3, 6]])