NumPy 배열 활용
1. 인덱싱과 슬라이싱
1.1 기본 인덱싱과 슬라이싱
인덱싱은 파이썬의 인덱싱과 유사합니다. arr[index]
와 같은 형태입니다.
다만, 완전히 동일한 방식은 아닙니다. 다차원 배열의 경우, 각 차원에 대한 인덱스를 콤마로 구분하여 지정할 수 있습니다. arr[row, column]
과 같은 형태로 사용합니다.
1.2 슬라이싱
슬라이싱도 파이썬과 유사하게 arr[start:end:step]
형태로 사용합니다.
다차원 배열의 경우, 각 차원에 대해 슬라이싱을 지정할 수 있습니다. arr[row_start:row_end, column_start:column_end]
형태로 사용합니다.
1.3 불리언 인덱싱
불리언 인덱싱은 조건에 맞는 요소만 선택하는 방법입니다. arr[condition] 형태로 사용합니다. 여기서 condition은 True/False 값을 가지는 배열이며, arr와 condition의 크기는 동일해야 합니다.
직접 불리언 값을 사용할 수도 있습니다.
이번에는 복합 조건을 사용해보겠습니다. 조건은 and로 둘 다 만족하는 경우를 사용해보겠습니다. 다만 불리언 인덱싱에서 and
연산자를 사용하지 않고 &
연산자를 사용해야 합니다.
1.4 팬시 인덱싱
팬시 인덱싱은 정수 배열을 사용하여 여러 인덱스의 요소를 동시에 선택하는 방법입니다. arr[[index1, index2, ...]]
형태로 사용합니다.
2. 배열 연결
2.1 concatnate 함수
배열 연결은 두 개 이상의 배열을 하나로 합치는 과정입니다. np.concatenate() 함수는 튜플이나 배열의 리스트를 받아 지정된 축을 따라 배열들을 연결합니다. concatenate는 배열들을 끝과 끝을 이어 붙이는 것과 같습니다.
2.2 vstack 함수
np.vstack() 함수는 수직(vertical)으로 배열들을 쌓아 연결합니다. 이는 2D 배열에서 행을 추가하는 것과 같습니다. vstack은 배열들을 수직으로 쌓는 것과 같습니다.
2.3 hstack 함수
np.hstack() 함수는 수평(horizontal)으로 배열들을 옆으로 연결합니다. 이는 2D 배열에서 열을 추가하는 것과 같습니다. hstack은 배열들을 수평으로 연결하는 것과 같습니다.
3. 배열 분할
3.1 split 함수
np.split() 함수는 배열을 여러 개의 하위 배열로 균등하게 나눕니다. 분할 지점이나 분할할 배열의 수를 지정할 수 있습니다. np.split(arr, 3)
은 3개의 하위 배열로 나누는 것을 의미합니다. 주의해야 할 점은 균등하게 나눌 수 없는 경우 ValueError가 발생합니다.
3.2 array split 함수
np.array_split() 함수는 split 함수와 유사하지만, 균등하게 나눌 수 없는 경우에도 사용할 수 있습니다. 이 경우 일부 하위 배열은 다른 배열보다 하나 더 적은 요소를 가질 수 있습니다.
3.3 hsplit 함수
np.hsplit() 함수는 배열을 수평(horizontal)으로 분할합니다.
3.4 vsplit 함수
np.vsplit() 함수는 배열을 수직(vertical)으로 분할합니다.