[파이썬][Scipy] ndarray (NumPy 배열) 예제

ndarray는 NumPy 패키지에서 제공하는 다차원 배열로, 수학적 연산 및 배열 연산을 효율적으로 수행하기 위한 중요한 데이터 구조입니다. 아래는 ndarray를 생성하고 다양한 작업을 수행하는 예제입니다.

먼저, NumPy를 가져옵니다:

mport numpy as np

예제 1: ndarray 생성과 기본 속성

# 1차원 배열 생성
arr1d = np.array([1, 2, 3, 4, 5])

# 2차원 배열 생성
arr2d = np.array([[1, 2, 3], [4, 5, 6]])

# 배열 모양(shape) 확인
shape_1d = arr1d.shape
shape_2d = arr2d.shape

# 배열 크기(size) 확인
size_1d = arr1d.size
size_2d = arr2d.size

# 배열 데이터 타입(dtype) 확인
dtype_1d = arr1d.dtype
dtype_2d = arr2d.dtype

print("1차원 배열:")
print(arr1d)
print("1차원 배열 모양:", shape_1d)
print("1차원 배열 크기:", size_1d)
print("1차원 배열 데이터 타입:", dtype_1d)

print("\n2차원 배열:")
print(arr2d)
print("2차원 배열 모양:", shape_2d)
print("2차원 배열 크기:", size_2d)
print("2차원 배열 데이터 타입:", dtype_2d)

예제 2: ndarray 연산

# 두 배열의 덧셈
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result_addition = arr1 + arr2

# 스칼라 곱셈
scalar = 2
result_scalar = scalar * arr1

# 배열 곱셈 (element-wise 곱셈)
result_multiply = arr1 * arr2

# 배열 제곱
result_square = arr1 ** 2

print("덧셈 결과:", result_addition)
print("스칼라 곱셈 결과:", result_scalar)
print("배열 곱셈 결과:", result_multiply)
print("배열 제곱 결과:", result_square)

예제 3: 배열 인덱싱과 슬라이싱

# 배열 인덱싱
arr = np.array([1, 2, 3, 4, 5])
index_2 = arr[2]  # 인덱스 2에 있는 원소
index_last = arr[-1]  # 마지막 원소

# 배열 슬라이싱
slice_2_to_4 = arr[1:4]  # 인덱스 1부터 3까지 슬라이스
slice_start_to_end = arr[::]  # 모든 원소 선택

print("인덱스 2:", index_2)
print("마지막 원소:", index_last)
print("슬라이싱 [1:4]:", slice_2_to_4)
print("모든 원소:", slice_start_to_end)

예제 4: 다차원 배열 인덱싱과 슬라이싱

# 2차원 배열 생성
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 특정 원소 선택
element = arr_2d[1, 2]  # 1행, 2열의 원소 (6)

# 행 또는 열 슬라이싱
row_1 = arr_2d[1, :]  # 1행 전체
col_2 = arr_2d[:, 2]  # 2열 전체

print("특정 원소:", element)
print("1행:", row_1)
print("2열:", col_2)

ndarray는 NumPy의 핵심 데이터 구조로, 다차원 배열을 다루는 데 매우 효율적입니다. 위의 예제를 통해 ndarray를 생성하고 다양한 연산 및 인덱싱/슬라이싱 작업을 수행하는 방법을 살펴볼 수 있습니다.