English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Разрезание массивов NumPy

Разрезание является обратной операцией к соединению.
Соединение (Joining) объединяет несколько массивов в один, а разрезание (Spliting) разбивает один массив на несколько.

Основные функции разрезания массивов таковы:

ФункцияМассивы и операции
splitРазрезание массива на несколько подмассивов
hsplitГоризонтальное разрезание массива на несколько подмассивов (по столбцам)
vsplitВертикальное разрезание массива на несколько подмассивов (по строкам)

numpy.split

Функция numpy.split разрезает массив по заданной оси на подмассивы, формат таков:

numpy.split(ary, indices_or_sections, axis)

Объяснение параметров:

ary: массив, подлежащий разделениюindices_or_sections: если это целое число, то используется для равномерного разделения, если это массив, то это положение для разделения по оси (слева открытый, справа закрытый) axis: по какой оси выполнять разделение, по умолчанию 0, горизонтальное разделение. При 1, вертикальное разделение

import numpy as np
a = np.arange(15)
print('Первый массив:')
print(a)
print('\n')
print('Разделить массив на три одинаковых подмассива: ')
b = np.split(a, 5)
print(b)
print('\n')
print('Разделить массив на указанные位置的 элементов в одномерном массиве: ')
b = np.split(a, [4, 7])
print(b)

Результат вывода:

Первый массив:
[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
Разделить массив на три одинаковых подмассива:
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([9, 10, 11]), array([12, 13, 14])]
Разделить массив на указанные位置的 элементов в одномерном массиве:
[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9, 10, 11, 12, 13, 14])]

Когда элементы в массиве меньше количества, требуемого для разделения, необходимо использоватьФункция array_splitОн будет производить соответствующие корректировки с конца.

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 4)
print(newarr)

Результат вывода:

[array([1, 2]), array([3, 4]), array([5]), array([6])]
Внимание:С помощью метода split() при недостаточном количестве элементов в исходном массиве для разделения, он не будет корректировать элементы, как в предыдущем примере, array_split() работает normalmente, но split() будет 실패.

numpy.hsplit

Функция numpy.hsplit предназначена для горизонтального разделения массива, разделяя исходный массив на множество массивов с заданной формой.

import numpy as np
harr = np.floor(10 * np.random.random((2, 8)))
print('オリジナルarray: ')
print(harr)
 
print('Разделение: ')
print(np.hsplit(harr, 4))

Результат вывода:

Исходный массив:
[[7. 9. 2. 6. 8. 7. 4. 5.]
 [2. 5. 3. 5. 9. 4. 1. 3.]
Разделение:
[array([[7., 9.],
       [2., 5.]]), array([[2., 6.],
       [3., 5.]]), array([[8., 7.],
       [9., 4.]]), array([[4., 5.],
       [1., 3.]])]

numpy.vsplit

numpy.vsplit разрезает по вертикальной оси, способ разреза аналогичен hsplit.

import numpy as np
a = np.arange(16).reshape(4, 4)
print('Первый массив:')
print(a)
print('\n')
print('Вертикальное разрезание:')
b = np.vsplit(a, 2)
print(b)

Результат вывода:

Первый массив:
[[0 1 2 3]
 [4 5 6 7]
 [8 9 10 11]
 [12 13 14 15]
Вертикальное разрезание:
[array([[0, 1, 2, 3],
       [4, 5, 6, 7]]), array([[8, 9, 10, 11],
       [12, 13, 14, 15]]]