English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Разрезание является обратной операцией к соединению.
Соединение (Joining) объединяет несколько массивов в один, а разрезание (Spliting) разбивает один массив на несколько.
Основные функции разрезания массивов таковы:
Функция | Массивы и операции |
split | Разрезание массива на несколько подмассивов |
hsplit | Горизонтальное разрезание массива на несколько подмассивов (по столбцам) |
vsplit | Вертикальное разрезание массива на несколько подмассивов (по строкам) |
Функция 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])]
Функция 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 разрезает по вертикальной оси, способ разреза аналогичен 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]]]