카테고리 없음

[ Python ] Numpy 이해하기 - 2

황성안 2021. 7. 22. 14:12
728x90

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)

728x90