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))3, 4, 5))6, 7, 8)) 9, 10, 11))12, 13, 14]] 배열을 일维 배열에서 표시된 위치로 분할합니다: [array([0, 1, 2, 3))4, 5, 6)) 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))3, 4))5))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))
출력 결과는:
원래 array: [7. 9. 2. 6. 8. 7. 4. 5.] [2. 5. 3. 5. 9. 4. 1. 3]] 분할 후: [array([7. 9, [2. 5.]]]2. 6, [3. 5.]]]8. 7, [9. 4.]]]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([[ 1, 2, 3], [4, 5, 6, 7]]] 8, 9, 10, 11], [12, 13, 14, 15]]]