numpy.array_split

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

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

Единственное отличие данной функции от функции split заключается в снятии ограничений на параметр indices_or_sections. В функции array_split параметр indices_or_sections может быть равен числу, которое не делит нацело длинну указанной оси.

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

Если указанная ось массива a имеет длинну L, и в качестве параметра indices_or_sections указано число n, то сначала будет возвращено L%n подмассивов длинной L//n + 1 и n - L%n подмассивов длинной L//n.

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

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

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

Примеры

>>> import numpy as np
>>> 
>>> a = np.arange(13)
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
>>> 
>>> np.array_split(a, 4)
[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9]), array([10, 11, 12])]
>>> 
>>> np.array_split(a, 5)
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10]), array([11, 12])]
>>> 
>>> np.array_split(a, [3, 7, 9])
[array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8]), array([ 9, 10, 11, 12])]
>>> 
>>> 
>>> b = np.arange(25).reshape(5, 5)
>>> b
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
>>> 
>>> np.array_split(b, 2)
[array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]]),
array([[15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])]
>>> 
>>> np.array_split(b, 3)
[array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]]),
array([[10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]]),
array([[20, 21, 22, 23, 24]])]
>>> 
>>> np.array_split(b, 2, axis = 1)
[array([[ 0,  1,  2],
       [ 5,  6,  7],
       [10, 11, 12],
       [15, 16, 17],
       [20, 21, 22]]),
array([[ 3,  4],
       [ 8,  9],
       [13, 14],
       [18, 19],
       [23, 24]])]
>>> 
>>> np.array_split(b, 3, axis = 1)
[array([[ 0,  1],
       [ 5,  6],
       [10, 11],
       [15, 16],
       [20, 21]]),
array([[ 2,  3],
       [ 7,  8],
       [12, 13],
       [17, 18],
       [22, 23]]),
array([[ 4],
       [ 9],
       [14],
       [19],
       [24]])]