요점정리 - 2025-11-03

오늘 공부한 내용
오늘 공부한 내용:
    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에 활용하여 정렬된 배열을 얻을 수 있음.