오늘 공부한 내용:
1. 🔢 Numpy 개요 및 핵심 특징
목표: 수학 및 통계 관련 함수를 지원하는 라이브러리로, 데이터 분석 및 인공지능 분야의 핵심 데이터 타입입니다.
핵심 자료형: 배열 데이터 타입 (numpy.ndarray).
특징: 모든 요소가 같은 자료형이어야 하며, 생성 후 요소의 개수를 바꿀 수 없습니다 (고정 크기).
장점: 파이썬 리스트에 비해 빠른 속도와 메모리 효율성을 제공하며, 행렬 연산에 최적화되어 있습니다.
배열 정보 확인 함수 (aryInfo):
type:
shape: 배열의 차원별 크기 (예: (5,)는 1차원, (2, 3)은 2행 3열).
ndim: 배열의 차원 수 (Dimension, 예: 1, 2, 3).
dtype: 배열 요소의 자료형 (예: int64, float64).
2. ⚡️ 벡터화 연산 및 인덱싱
벡터화 연산 (Vectorization): 배열의 모든 요소에 대해 반복 연산을 단 하나의 명령어로 처리하는 방식.
산술 연산 (+, **), 비교 연산 (==, >), 논리 연산 (&, |) 모두 배열 전체에 적용 가능.
인덱싱 및 슬라이싱: 파이썬 리스트와 유사하게 사용.
팬시 인덱싱 (Fancy Indexing):
정수 배열 인덱싱: 인덱스 리스트를 사용하여 원하는 위치의 요소를 한 번에 추출. (예: ary[[0, 2]]).
불리언 인덱싱 (Boolean Indexing): 조건식을 적용한 결과 배열(True/False)을 인덱스로 사용하여 조건에 맞는 요소만 추출. (예: ary[ary % 2 == 0]).
3. 🏗️ 배열 구조 변경 및 연결
생성 및 변형:
np.array(list): 리스트를 배열로 생성.
np.arange(start, end): 연속된 정수 배열 생성.
ary.astype(np.type): 배열 요소의 타입 변경.
reshape(h, w): 배열의 차원 및 크기 변경. -1은 해당 축의 크기를 자동으로 계산하도록 지정.
ary.T: 전치 행렬 (Transpose). 행과 열을 바꿈. 1차원 배열도 reshape(1, 6).T와 같이 2차원(열 벡터)으로 변환할 때 사용됨.
ary.flatten(): 다차원 배열을 1차원 배열로 펼침.
np.tile(ary, (h, w)): 배열을 지정된 횟수만큼 반복하여 확장 (타일처럼 배치).
배열 연결 (Concatenation):
np.hstack([ary1, ary2]): 수평(Horizontal) 연결. 행의 개수가 동일해야 함.
np.vstack([ary1, ary2]): 수직(Vertical) 연결. 열의 개수가 동일해야 함.
np.stack([ary1, ary2], axis=n): 새로운 축을 생성하여 배열을 합침.
np.dstack([ary1, ary2]): 깊이(Depth) 방향으로 배열을 합침.
4. 📊 통계 함수 및 정렬
차원 축소 함수 (Dimension Reduction):
np.sum(), np.mean(), np.median(), np.var(), np.std() (표준 편차).
축(Axis) 중요:
axis = 0: **열(Column)**을 따라 연산 (결과는 행 개수가 축소됨).
axis = 1: **행(Row)**을 따라 연산 (결과는 열 개수가 축소됨).
np.max(), np.min(): 최대/최소값.
np.argmax(), np.argmin(): 최대/최소값의 인덱스 반환.
np.percentile(ary, n): 분위수 계산.
논리 함수:
np.any(): 배열 내 하나라도 True이면 True 반환.
np.all(): 배열 내 모두 True여야 True 반환.
정렬 (Sorting):
np.sort(ary): 원본을 변경하지 않고 정렬된 복사본을 반환 (in-place 아님).
ary.sort(): 원본 배열을 직접 정렬 (in-place).
np.argsort(ary): 배열을 정렬했을 때의 인덱스 순서를 반환. 이를 Fancy Indexing에 활용하여 정렬된 배열을 얻을 수 있음.