mindspore.numpy.array_split¶

mindspore.numpy.array_split(x, indices_or_sections, axis=0)[source]

Splits a tensor into multiple sub-tensors.

Note

Currently, array_split only supports mindspore.float32 on CPU.

The only difference between np.split and np.array_split is that np.array_split allows indices_or_sections to be an integer that does not equally divide the axis. For a tensor of length l that should be split into n sections, it returns $$l % n$$ sub-arrays of size $$l//n + 1$$ and the rest of size $$l//n$$.

Parameters
• x (Tensor) – A Tensor to be divided.

• indices_or_sections (Union[int, tuple(int), list(int)]) – If integer, $$N$$, the tensor will be divided into $$N$$ tensors along axis. If tuple(int), list(int) or of sorted integers, the entries indicate where along axis the array is split. For example, $$[2, 3]$$ would, for $$axis=0$$, result in three sub-tensors $$x[:2]$$, $$x[2:3]$$. If an index exceeds the dimension of the array along axis, an empty sub-array is returned correspondingly.

• axis (int) – The axis along which to split. Default: 0.

Returns

A list of sub-tensors.

Raises
• TypeError – If argument indices_or_sections is not integer, tuple(int) or list(int) or argument axis is not integer.

• ValueError – If argument axis is out of range of $$[-x.ndim, x.ndim)$$.

Supported Platforms:

Ascend GPU CPU

Examples

>>> import mindspore.numpy as np
>>> input_x = np.arange(9).astype("float32")
>>> output = np.array_split(input_x, 4)
>>> print(output)
(Tensor(shape=[3], dtype=Float32,
value= [ 0.00000000e+00,  1.00000000e+00,  2.00000000e+00]),
Tensor(shape=[2], dtype=Float32,
value= [ 3.00000000e+00,  4.00000000e+00]),
Tensor(shape=[2], dtype=Float32,
value= [ 5.00000000e+00,  6.00000000e+00]),
Tensor(shape=[2], dtype=Float32,
value= [ 7.00000000e+00,  8.00000000e+00]))