flopscope.numpy.permute_dims
fnp.permute_dims(a, axes=None)[flopscope source][numpy source]
Returns an array with axes transposed.
Adapted from NumPy docs np.permute_dims
Permute dimensions (NumPy 2.x array API).
For a 1-D array, this returns an unchanged view of the original array, as a
transposed vector is simply the same vector.
To convert a 1-D array into a 2-D column vector, an additional dimension
must be added, e.g., flops.atleast_2d(a).T achieves this, as does
a[:, flops.newaxis].
For a 2-D array, this is the standard matrix transpose.
For an n-D array, if axes are given, their order indicates how the
axes are permuted (see Examples). If axes are not provided, then
transpose(a).shape == a.shape[::-1].
Parameters
- a:array_like
Input array.
- axes:tuple or list of ints, optional
If specified, it must be a tuple or list which contains a permutation of [0, 1, ..., N-1] where N is the number of axes of
a. Negative indices can also be used to specify axes. The i-th axis of the returned array will correspond to the axis numberedaxes[i]of the input. If not specified, defaults torange(a.ndim)[::-1], which reverses the order of the axes.
Returns
- p:ndarray
awith its axes permuted. A view is returned whenever possible.
See also
- ndarray.transpose Equivalent method.
- we.flops.moveaxis Move axes of an array to new positions.
- we.flops.argsort Return the indices that would sort an array.
Notes
Use transpose(a, argsort(axes)) to invert the transposition of tensors
when using the axes keyword argument.
Examples
>>> import flopscope.numpy as fnp
>>> a = flops.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> flops.transpose(a)
array([[1, 3],
[2, 4]])>>> a = flops.array([1, 2, 3, 4])
>>> a
array([1, 2, 3, 4])
>>> flops.transpose(a)
array([1, 2, 3, 4])>>> a = flops.ones((1, 2, 3))
>>> flops.transpose(a, (1, 0, 2)).shape
(2, 1, 3)>>> a = flops.ones((2, 3, 4, 5))
>>> flops.transpose(a).shape
(5, 4, 3, 2)>>> a = flops.arange(3*4*5).reshape((3, 4, 5))
>>> flops.transpose(a, (-1, 0, -2)).shape
(5, 3, 4)