오늘은 NumPy의 다양한 기능과 기본 사용법에 대해 학습했습니다.
배열 생성부터 연산, 변환, 그리고 데이터 처리에 이르기까지 NumPy의 핵심을 이해할 수 있는 시간이었습니다.
1. NumPy 배열의 기본 이해
- NumPy 배열은 Python의 리스트보다 빠르고, 메모리 효율적입니다.
- 배열의 차원(ndim), 형태(shape), 데이터 타입(dtype), 메모리 크기(nbytes) 등을 확인할 수 있습니다.
array = np.array([[1, 2, 3], [4, 5, 6]])
print(array.shape) # (2, 3)---형태
print(array.ndim) # 2------- 차원
print(array.dtype) # int64 ---데이터타입
print(array.nbytes) # 48 -----메모리크기
2. 배열 생성 및 초기화
- 배열 생성: `np.array()`를 사용.
- 초기화 방법:
- `np.zeros()`, `np.ones()`, `np.full()`
- 연속 값 생성: `np.arange()` 또는 `np.linspace()`
- 랜덤 값 생성: `np.random.rand()`, `np.random.randint()`
zeros = np.zeros((2, 3)) # 2x3 크기의 0으로 채워진 배열
arange* = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]
random = np.random.rand(2, 3) # 2x3 랜덤 값
*np.arange(start, stop, step)
start: 시작 값 (포함) / stop: 끝 값 (포함하지 않음) / step: 증가 간격.
👉 np.arange(0, 10, 2)
0부터 시작, 10을 포함하지 않는 값까지만 생성, 2씩 증가 > [0,2,4,6,8]
3. 배열 연산
- 배열 간의 사칙 연산은 원소별로 수행됩니다.
- 크기가 다른 배열 간에는 브로드캐스팅을 통해 연산을 수행할 수 있습니다.
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
print(array1 + array2) # [5, 7, 9]
print(array1 * 2) # [2, 4, 6]
4. 배열 변환
- 배열의 모양을 변경: reshape()
- 배열 평탄화(1차원 변환): flatten() - 원본 수정x / ravel() - 원본 수정o
- 배열 전치: transpose() 또는 .T
결과
array = np.array([[1, 2, 3], [4, 5, 6]]) ---- [[1 2 3]
[4 5 6]]
reshaped = array.reshape(3, 2) ---------[[1 2]
[3 4]
[5 6]]
flattened = array.flatten() ------------ [1 2 3 4 5 6]
transposed = array.T -------------------- [[1 4]
[2 5]
[3 6]]
5. 브로드캐스팅과 배열 연산 오류
- 브로드캐스팅은 배열 간 크기가 다를 때에도 연산이 가능하게 합니다.
- 그러나 크기가 호환되지 않으면 `ValueError`가 발생합니다.
arr1 = np.array([1, 2, 3]) # (3,) - 1차원 배열
arr2 = np.array([[4], [5]]) # (2, 1) - 2차원 배열
result = arr1 + arr2 # 브로드캐스팅 가능 - [[5, 6, 7],
[6, 7, 8]]
오늘의 배운 점
- 넘파이는 배열을 효율적으로 다룰 수 있는 강력한 도구다.
- 배열의 생성, 변환, 연산 등 다양한 기능을 학습하며 데이터 처리의 기초를 다질 수 있었다.
내일 할 일
- 파이썬 라이브러리 4주차 강의까지 학습
- 팀 스터디 : 딕셔너리 공부
'TIL' 카테고리의 다른 글
내일배움캠프 본캠프 3일차 - Python 공부 (0) | 2024.11.27 |
---|---|
내일배움캠프 본캠프 2일차 - 프로그래머스 파이썬 문제 풀기 (0) | 2024.11.26 |
내일배움캠프 본캠프 4일차 - 엑셀보다 쉽고 빠른 SQL 1-1 ~ 3-3 (2) | 2024.11.14 |
내일배움캠프 사전캠프 3일차 - MySQL (0) | 2024.11.10 |
내일배움캠프 사전캠프 2일차 - 스타터 노트 (3) | 2024.11.08 |