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))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]]
주의:split() 메서드를 사용하여 원본 배열의 요소가 적을 때, 그 요소를 조정하지 않습니다. 예를 들어, array_split()는 정상적으로 작동하지만, 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))

출력 결과는:

원래 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

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]]]