TIL

내일배움캠프 본캠프 1일차 - 파이썬 라이브러리 (Numpy)

수현조 2024. 11. 25. 20:23


오늘은 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주차 강의까지 학습
- 팀 스터디 : 딕셔너리 공부