6. 배열 분할, 재구성, 결합
1) 배열 속성
차원의 개수
각 차원의 크기
전체배열 크기
x ndim: 3
x shape: (3, 4, 5)
x size: 60
print("x ndim:",x.ndim) print("x shape:",x.shape) print("x size:",x.size)
2) 배열 인덱싱
개별 배열 요소값을 가져오거나 특정 위치에 값을 설정하기 위해 사용
2, 8
y=np.array([2, 4, 6, 8, 10]) print(y[0], y[-2])
3) 다차원 배열 인덱싱
3
z=np.array([[2, 4, 6, 8, 10], [3, 6, 9, 12, 15]]) print(z[1, 0])
0,0 의 위치의 값을 12로 수정
array([[12, 4, 6, 8, 10], [3, 6, 9, 12, 15]])
z[0, 0] = 12 z
4) 배열 슬라이싱
- 콜론(:) 기호를 나타내는 슬라이스(slice) 표기법
- `x[start:stop:step]`
- 기본값
- start 는 0으로 설정
- stop은 차원 크기로 설정
- step은 1로 설정
array([4, 5, 6 ,7])
x=np.arange(10) x[4:8]
array([0, 1, 2, 3, 4])
x=np.arrange(10) x[:5]
array([5, 6, 7, 8, 9])
x=np.arrange(10) x[5:]
5) 다차원 배열 슬라이싱
- 콤마(,)로 구분된 다중 슬라이스(slice) 표기법
array([[2, 4, 6],
[3, 6, 9]])
z=np.array([[2, 4, 6, 8], [3, 6, 9, 12], [4, 8, 12, 16]]) z[:2, :3]
array([[2, 6],
[3, 9],
[4, 12]])
z=np.array([[2, 4, 6, 8], [3, 6, 9, 12], [4, 8, 12, 16]]) z[:3, :2]
6) 배열 재구조화
- reshape 함수
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
z=np.arange(1, 10).reshape(3, 3) z
7) 배열 결합
- concatenate, vstack, hstack 을 사용하여 두 배열을 결합할수 있다.
concatenate 결합 방법
array([1, 2, 3, 3, 2 ,1])
x=np.array([1, 2, 3]) y=np.array([3, 2, 1]) z=np.concatenate([x, y]) z
vstack 결합 방법 = 수직 스택
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
x=np.array([1, 2, 3]) grid=np.array([[4, 5, 6], [7, 8, 9]]) v=np.vstack([x, grid]) v
hstack
array([[4, 5, 6, 99],
[7, 8, 9, 99]])
y=np.array([[99],[99]]) z=np.hstack([grid, y]) z
8) 배열 분할
- split, vsplit, hsplit
split
x1, x2 ,x3 로 분할한다.
split(인덱스 3 분할,인덱스 5 분할)
[1 2 3] [77 77] [3 2 1]
x = [1, 2, 3, 77, 77, 3, 2, 1] x1, x2, x3 = np.split(x, [3,5]) print(x1, x2, x3)
vsplit
grid 배열이 상하 2개로 나뉨
[[0 1 2 3]
[4 5 6 7]]
[[ 8 9 10 11 ]
[12 13 14 15]]
grid = np.arange(16).reshape((4,4)) upper, lower=np.vsplit(grid, [2]) print(upper) print(lower)
[[ 0 1]
[ 4 5]
[ 8 9]
[ 12 13]]
[[ 2 3]
[ 6 7]
[ 10 11]
[ 14 15]]
grid = np.arange(16).reshape((4,4)) upper, lower=np.hsplit(grid, [2]) print(left) print(rigth)