728x90
NumPy는 파이썬에서 과학 연산을 위한 가장 기본적인 라이브러리입니다. 다차원 배열과 행렬 연산에 필요한 다양한 함수와 메소드를 제공합니다.
NumPy의 기본 데이터 구조는 'ndarray'로, 동일한 타입의 요소들을 포함하는 n차원 배열입니다.
1. NumPy 기본 사용법
1.1. NumPy 설치
NumPy를 사용하기 전, 라이브러리를 설치해야 합니다.
일반적으로 np 별칭을 붙여 불러옵니다.
# 라이브러리 불러오기
import numpy as np
1.2. 배열 생성
NumPy 배열은 'numpy.array' 함수를 사용하여 생성할 수 있습니다.
라이브러리를 불러올 때, np라고 별칭을 붙였기 때문에 'np.array'를 사용하여 생성할 수 있습니다.
import numpy as np
# 1차원 배열 생성
arr_1d = np.array([1, 2, 3])
print(arr_1d)
# 2차원 배열 생성
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2d)
1.3. 배열 속성
NumPy 배열은 다양한 속성을 가지고 있습니다.
- ndarray.ndim: 배열의 차원 수 또는 축의 수
- ndarray.shape: 배열의 형태, 각 차원의 크기를 나타내는 튜플
- ndarray.size: 배열의 총 요소 수
- ndarray.dtype: 배열 요소의 데이터 타입
print("Shape of arr_2d:", arr_2d.shape)
print("Size of arr_2d:", arr_2d.size)
print("Data type of arr_2d:", arr_2d.dtype)
print("Number of dimensions of arr_2d:", arr_2d.ndim)
1.4. 배열 인덱싱과 슬라이싱
NumPy는 배열의 특정 요소에 접근하거나, 부분 배열을 선택하는 여러 방법을 제공합니다.
# 인덱싱
print("First row, second column:", arr_2d[0, 1])
# 슬라이싱
print("First column:\n", arr_2d[:, 0])
print("Second row:\n", arr_2d[1, :])
1.5. 배열 연산
NumPy는 배열 간의 기본 연산을 지원합니다. 이 연산은 요소별로 수행되며, 새 배열을 반환합니다.
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 요소별 합
print("Sum:\n", a + b)
# 요소별 곱
print("Product:\n", a * b)
# 요소별 제곱
print("Square of a:\n", a ** 2)
2. NumPy 고급 사용법
2.1. 고급 배열 조작
NumPy는 배열을 조작하기 위한 다양한 방법을 제공합니다.
- 배열 형태 변경: reshape
- 배열 결합: np.concatenate, np.vstack, np.hstack 등
- 배열 분할: np.split, np.hsplit, np.vsplit 등
# reshape
arr_reshaped = arr_2d.reshape((3, 2))
print("\nReshaped array:\n", arr_reshaped)
# concatenate
arr_concatenated = np.concatenate([a, b])
print("\nConcatenated array:\n", arr_concatenated)
2.2. 브로드캐스팅
브로드캐스팅은 서로 다른 형태의 배열 간 연산을 수행할 수 있게 하는 강력한 메커니즘입니다. 이를 통해 차원이 다른 배열들이 함께 연산될 때, 작은 배열이 큰 배열의 형태에 맞춰 자동으로 확장되어 연산이 수행됩니다.
a = np.array([1, 2, 3])
b = np.array([[0], [10], [20]])
# a는 1x3 배열, b는 3x1 배열이지만 브로드캐스팅을 통해 함께 연산 가능
print("Broadcasted addition:\n", a + b)
여기서 'a'는 '[1, 2, 3]' 으로 3개의 요소를 가진 1차원 배일이고,
'b'는 '[0]', '[10]', '[20]'을 요소로 가지는 3x1의 2차원 배열입니다.
브로드 캐스팅 덥군에 'a'는 각각의 'b'의 행에 대해 연산을 수행할 수 있습니다.
2.3. 유용한 NumPy 함수
- 최대/최소: min, max, argmin, argmax
- 통계: sum, mean, median, std, var
- 불리언: all, any
- 불리언 인덱싱: 배열 내 조건을 만족하는 요소만 선택하는 기술
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 합계
print("Sum of all elements:", np.sum(arr))
# 평균
print("Mean of all elements:", np.mean(arr))
# 중앙값
print("Median of all elements:", np.median(arr))
# 표준편차
print("Standard deviation:", np.std(arr))
# 불리언 인덱싱을 사용하여 배열 내 조건을 만족하는 요소만 선택
print("Elements greater than 2:\n", arr[arr > 2])
728x90
반응형
'IT > Python' 카테고리의 다른 글
[파이썬] NumPy 기술 통계 (0) | 2024.03.14 |
---|---|
[파이썬] 엑셀 파일 다루기 (1) | 2024.03.12 |
[파이썬] 사용자 입출력(I/O) / 파일 읽고 쓰기 (1) | 2024.03.12 |
[파이썬] 정규 표현식 (0) | 2024.03.12 |
[파이썬] 함수 (1) | 2024.03.12 |