numpy.split

numpy.split(a, indices_or_sections, axis=0)

Функция split() разбивает массив на несколько подмассивов.

Параметры:
a - массив NumPy
Массив, который необходимо разбить на подмассивы.
indices_or_sections - целое число или одномерный массив

Если в качестве этого параметра указано целое число N, то массив будет разделен на N равных частей вдоль указанной в параметре axis оси.

Если параметр indices_or_sections является одномерным массивом отсортированных по возрастанию целых чисел, то вдоль указанной оси массив будет разбит на соответствующие указанным числам промежутки. Например, если указан массив indices_or_sections = [2,4,7], то это будет соответствовать промежуткам [:2], [2:4], [4:7], [7:].

Если некоторое число в одномерном массиве параметра indices_or_sections превышает размер массива вдоль указанной оси, то будет возвращен пустой массив.

axis - целое число (необязательный)
Определяет ось вдоль которой происходит разбиение массива. По умолчанию равен 0 (первая ось).
Возвращает:
list of ndarrays - список массивов NumPy
Список подмассивов исходного массива a.
Смотрите так же: array_split, dsplit, hsplit, vsplit

Замечание

В случае если параметр indices_or_sections равен числу, которое не делит нацело длинну указанной оси или превышает размер массива вдоль указанной оси, то будет возбуждено исключение ValueError.


Примеры

>>> import numpy as np
>>> 
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> 
>>> np.split(a, 5)
[array([0, 1]), array([2, 3]), array([4, 5]), array([6, 7]), array([8, 9])]
>>> 
>>> np.split(a, [2, 6, 8])
[array([0, 1]), array([2, 3, 4, 5]), array([6, 7]), array([8, 9])]
>>> 
>>> 
>>> b = np.arange(9).reshape(3, 3)
>>> b
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> 
>>> np.split(b, 3)
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
>>> 
>>> np.split(b, 3, axis = 1)
[array([[0],
       [3],
       [6]]),
array([[1],
       [4],
       [7]]),
array([[2],
       [5],
       [8]])]
>>> 
>>>
>>> #  Пустые массивы возвращаются если в indices_or_sections
... #  указано число превышающее размер делимой оси
... np.split(b, [1, 2, 3, 4], axis = 1)
[array([[0],
       [3],
       [6]]),
array([[1],
       [4],
       [7]]),
array([[2],
       [5],
       [8]]),
array([], shape=(3, 0), dtype=int32),
array([], shape=(3, 0), dtype=int32)]