NumPy 배열에서 축 인덱싱 방법
기본 축 인덱싱
NumPy 배열에서 축 인덱싱은 대괄호 []
를 사용하여 수행됩니다.
- 1D 배열: 1D 배열의 경우, 대괄호 안에 단일 정수 인덱스를 지정하면 해당 위치의 값을 가져옵니다. 예를 들어, 다음 코드는
arr
배열의 3번째 요소를 출력합니다.
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[3]) # 40 출력
- 2D 배열: 2D 배열의 경우, 행 및 열 인덱스를 쉼표로 구분하여 지정해야 합니다. 예를 들어, 다음 코드는
arr
배열의 두 번째 행 첫 번째 열의 값을 출력합니다.
import numpy as np
arr = np.array([[10, 20], [30, 40], [50, 60]])
print(arr[1, 0]) # 30 출력
슬라이싱을 통한 축 인덱싱
슬라이싱을 사용하여 연속된 값의 하위 집합을 선택할 수 있습니다. 범위를 지정하려면 :
기호를 사용하고, 선택된 범위의 시작 및 끝 지점을 정수로 지정합니다.
- 1D 배열: 1D 배열에서 슬라이싱을 사용하여 연속된 요소를 선택할 수 있습니다. 예를 들어, 다음 코드는
arr
배열의 두 번째 요소부터 네 번째 요소까지 (양쪽 끝 포함)를 추출합니다.
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[2:4]) # [30 40] 출력
- 2D 배열: 2D 배열에서 슬라이싱을 사용하여 행 또는 열의 하위 집합을 선택할 수 있습니다. 행과 열을 선택하려면 별도의 슬라이스를 사용해야 합니다. 예를 들어, 다음 코드는
arr
배열의 첫 번째 행의 모든 열과 두 번째 행의 두 번째 열을 추출합니다.
import numpy as np
arr = np.array([[10, 20], [30, 40], [50, 60]])
print(arr[0, :]) # [10 20] 출력
print(arr[1, 1]) # 40 출력
고급 축 인덱싱
NumPy는 더 복잡한 인덱싱 작업을 위한 다양한 기능을 제공합니다.
- 조건부 인덱싱: 특정 조건을 충족하는 요소만 선택하는 데 사용할 수 있습니다. 예를 들어, 다음 코드는
arr
배열에서 30보다 큰 모든 값을 추출합니다.
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[arr > 30]) # [40 50] 출력
- 팬시 인덱싱: 여러 배열을 사용하여 인덱스를 지정하는 데 사용할 수 있습니다. 예를 들어, 다음 코드는
arr1
배열의 인덱스를 사용하여arr2
배열에서 값을 선택합니다.
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([10, 20, 30, 40, 50])
print(arr2[arr1]) # [10 20 30] 출력
축 지정
NumPy 배열에서 축 인덱싱 예제 코드
1D 배열
import numpy as np
# 1D 배열 생성
arr = np.array([10, 20, 30, 40, 50])
# 특정 요소 추출
print(arr[2]) # 30 출력
# 슬라이싱을 통한 하위 집합 추출
print(arr[1:4]) # [20 30 40] 출력
# 조건부 인덱싱
print(arr[arr > 25]) # [30 40 50] 출력
2D 배열
import numpy as np
# 2D 배열 생성
arr = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
# 특정 요소 추출
print(arr[1, 2]) # 60 출력
# 행 및 열 추출
print(arr[0, :]) # [10 20 30] 출력
print(arr[:, 1]) # [20 50 80] 출력
# 슬라이싱을 통한 하위 집합 추출
print(arr[1:3, :2]) # [[40 50] [70 80]] 출력
# 팬시 인덱싱
rows = np.array([1, 2])
cols = np.array([0, 2])
print(arr[rows, cols]) # [40 80] 출력
다차원 배열
import numpy as np
# 3D 배열 생성
arr = np.array([[[10, 20, 30], [40, 50, 60]], [[70, 80, 90], [100, 110, 120]]])
# 특정 요소 추출
print(arr[1, 0, 2]) # 90 출력
# 축 지정을 통한 인덱싱
print(arr[1, :, 2]) # [90 120] 출력
# 조건부 인덱싱
print(arr[arr > 60]) # [[[70, 80, 90], [100, 110, 120]]] 출력
이 예제들은 NumPy 배열에서 축 인덱싱을 수행하는 다양한 방법을 보여줍니다. 특정 작업에 가장 적합한 방법은 배열의 차원과 원하는 결과에 따라 다릅니다.
추가 자료
- Pandas는 데이터 분석 및 조작을 위한 인기 있는 Python 라이브러리입니다.
- DataFrames를 사용하여 다차원 데이터를 효율적으로 저장하고 처리할 수 있습니다.
- NumPy 배열을 Pandas DataFrame으로 쉽게 변환할 수 있습니다.
- Pandas는 데이터 정리, 결측값 처리, 집계 등 다양한 데이터 분석 기능을 제공합니다.
SciPy:
- SciPy는 과학적 컴퓨팅을 위한 Python 라이브러리입니다.
- NumPy 배열을 사용하여 수치 연산을 수행하는 데 다양한 함수를 제공합니다.
- 선형 대수, 적분, 통계 분석 등 다양한 과학적 컴퓨팅 작업을 지원합니다.
- NumPy와 함께 사용하여 강력한 과학적 컴퓨팅 기능을 제공합니다.
Matplotlib:
- Matplotlib은 Python용 2D 플롯팅 라이브러리입니다.
- NumPy 배열을 사용하여 다양한 유형의 차트와 그래프를 생성할 수 있습니다.
- 선 그래프, 막대 그래프, 히스토그램, 산점도 등 다양한 플롯 유형을 지원합니다.
- NumPy 데이터를 시각화하는 데 효과적인 도구입니다.
TensorFlow/PyTorch:
- TensorFlow 및 PyTorch는 머신 러닝 및 딥 러닝 애플리케이션을 위한 프레임워크입니다.
- NumPy 배열을 사용하여 신경망 모델을 구축하고 학습할 수 있습니다.
- 다양한 머신 러닝 알고리즘과 도구를 제공합니다.
- NumPy와 함께 사용하여 강력한 머신 러닝 및 딥 러닝 모델을 구축할 수 있습니다.
Dask:
- Dask는 분산된 처리를 위한 Python 라이브러리입니다.
- 큰 NumPy 배열을 효율적으로 처리하는 데 도움이 됩니다.
- 배열 분할, 병렬 처리, 결과 병합 등 다양한 기능을 제공합니다.
- 대규모 데이터 세트를 다루는 경우 유용합니다.
이 외에도 NumPy 배열을 다루는 데 도움이 되는 다양한 라이브러리와 도구가 있습니다.
python numpy