팬시 인덱싱 (Fancy indexing)

    • 정수 배열 인덱스
    • 리스트나 ndarray로 인덱스 집합을 지정하면 해당 위치의 인덱스에 해당하는 ndarray를 반환.
    • 정수나 불린(Boolean) 값을 가지는 다른 Numpy 배열로 배열을 인덱싱할 수 있는 기능을 의미.
    • Boolean 값을 가진 배열을 사용하여 직관적으로 인덱싱 가능
    1. [ ] : 대괄호 사용 → [ [  ] ,  ] : 대괄호 안에 넣으면 반환 값이 ndarray가 됨.
    2. [ , ] : 대괄호 안에 , 사용 
    3. [ , ] , [ , ] : (0, 0) (1, 1)의 값이 들어가있는 ndarray를 반환.

    팬시 인덱싱
    팬시 인덱싱
    팬시 인덱싱

    슬라이싱을 할 때는 큰 범위로 붙어있는 값만 추출할 수 있지만

    팬시 인덱싱은 원하는 요소만 추출할 수 있음.

     

    팬시 인덱싱

     

     

     

     

     

     

     

     

    배열 크기 변환

    reshpae(차원)

    • 배열.reshape(차원)
    • 배열과 차원을 변형해주는 reshape 함수.
    •  np.reshape(변경할 배열, 차원)

     

    reshape 예제

     

     

     

     

    reshape ( -1)

    -1의 의미는 변경된 배열의 '-1' 위치의 차원은

    '원래 배열의 길이와 남은 차원으로 부터 추정'

     

    하지만, -1로 지정하였어도

    ex ) arr.reshape(3, -1)로 바꾼다면 에러가 남.

    데이터가 총 32개일 때 열을 3개로 만든다면 

     

    [ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ],

     [ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ],

     [ 22, 23, 24, 25, 26, 27, 28, 29, 31,    ,    ] ]

     

    빈공간이 생기기 때문에 에러 발생!

     

     

     

     

     

     

    flatten ( )

    • 배열.flatten()
    • 다차원 배열 공간을 1차원으로 평탄화해주는 함수.

    flatten 예제

     

     

     

     

     

     

     

     

    배열 전치와 축 바꾸기

    T

    • arr.T
    • 행 → 열 / 열 → 행

    T

     

     

     

    transpose

    • arr.transpose(행, 열) / 2차원
    • arr.transpose(차원, 행, 열)
    • 괄호 안에 입력한 것은 axis 번호이다.

    transpose

     

    tranpose 예제

     

     

     

     

    swapxes

    • arr.swapxes( )
    • 2차원이든 3차원이든 2개를 쓸 수만 있음.
    • 3차원 → (층, 행)

     

     

     

     

     

     

     

     

     

     

    배열 결합

    hstack

    • np.hstack( [arr1, arr2] )
    • 행의 수가 같은 두 개 이상의 배열을 옆으로 연결

    hstack 예제

     

     

     

     

     

     

    vstack

    • np.vstack( [ arr1, arr2 ])
    • 열의 수가 같은 두 개 이상의 배열을 위 아래로 연결

    vstack 예제

     

     

     

     

     

    dstack

    • np.dstack( [ c1, c2 ] )
    • 깊이 방향으로 배열을 합침

    dstack 예제

     

     

     

     

     

    tile

    • np.tile(배열, 반복횟수)
    • 동일한 배열을 반복 횟수만큼 이어 붙이는 함수

    tile 예제

     

     

     

     

     

     

     

     

     

    2차원 그리드 포인트 생성

    meshgrid

    • 변수가 2개인 2차원 함수의 그래프를 그리거나 표를 작성하려면 2차원 영역에 대한 (x, y) 좌표값 쌍 필요 그리드 포인트(grid point)를 생성하여 각 좌표에 대한 함수 값을 계산
    np.meshgrid(xi,
    	    copy = True,
                sparse = False,
                indexing = 'xy')
    xi 그리드에 나타낼 1차원 배열 백터
    copy Flase가 되면 메모리 절약을 위해 오리지널 배열로 반환
    sparse True로 하면 메모리 정략을 위해 희소 그리드를 반환
    indexing 카테시안 인덱스(일반좌표) 표시를 원하면 'xy', 행렬 인덱스는 'ij'

    meshgrid 예시

     

     

     

     

     

     

    브로드캐스팅

    • 넘파이에서는 서로 다른 크기를 가진 두 배열의 사칙 연산 지원.
    • 작은 배열을 자동으로 반복 확장하여 크기가 큰 배열에 맞추는 방법.
    • 배열의 개수가 맞지 않아 연산을 하지 못하는 상황에서 배열을 맞추어 줌.

     

     

     

     

     

     

    차원축소

    • 1차원 백터로 나오는 것
    • 최대/최소: min, max, argmin, argmax
    max(데이터) 데이터 중 최대값을 반환
    np.argmax(데이터) 최대값이 "어디에 있는지" 반환 → 인덱스 값 반환
    min(데이터) 데이터 중 최소값을 반환
    np.argmin() 최소값이 "어디에 있는지" 반환 → 인덱스 값 반환

    통계: sum, mean, median, std, var

    불리언: all, any

     

     

     

     

     

     

    기술통계

    • 데이터의 개수(count)
    • 평균(mean, average)
    • 분산(variance)
    • 표준 편차(standard deviation)
    • 최댓값(maximum)
    • 최솟값(minimum)
    • 중앙값(median)
    • 사분위수(quartile)

     

     

     

     

     

     

    조건 만족하는 인덱스 찾기

    where

    np.where (condition - 조건식,
              x - condition이 True일 경우 반환값,
              y - condition이 False일 경우 반환값)

     

    where 예제

     

     

     

     

     

    집합관련 함수

    unique

    numpy.unique(ar,
                 return_index=False, 
                 return_inverse=False, 
                 return_counts=False, 
                 axis=None)
    ar 배열로 변환할 수 있는 배열 또는 객체
    return_index boolean. True인 경우 각 고유한 값이 처음 나타나는 인덱스 배열을 반환.
    return_inverse boolean. True이면 입력 배열을 재구성하는 데 사용할 수 있는 고유 배열의 인덱스 반환
    return_count boolean. True이면 각 고유 값의 개수 배열을 반환합니다.
    axis 고유한 행 (axis=0) 또는 열 (axis=1)을 찾습니다. 기본적으로 고유한 요소는 평면화 된 배열에서 검색됩니다.

     

    unique 예제

    0부터 1까지 각각 카운트.

     

     

     

     

    난수 생성

     

    random( ) 0 이상 ~ 1 미만 사이의 실수를 랜덤하게 반환.
    uniform( x, y ) 두 수를 받아 (x <= n < y) 의 실수를 랜덤하게 반환.
    randint( x, y ) 두 개의 정수를 받아 (x <= n < y)의 정수를 랜덤하게 반환.
    randange( start, end, step ) 두 개의 정수를 받아 start <= n < end 정수를 랜덤하게 반환.
    suffle( ) 요소를 랜덤하게 섞음.
    choice 요소 중 한 가지를 랜덤하게 선택.
    sample( ) 랜덤하게 정해서 숫자만큼 요소를 정해서 리스트형으로 변환
    seed( ) 난수 생성기 초기화.

    난수 생성 예제

     

    seed

    • np.random.seed()
    • 특정 시작 숫자값을 정해주면 정해진 알고리즘에 따라 마치 난수처럼 보이는 수열 생성.

    seed 예제

     

     

     

     

    choice

    • 무작위 선택
    numpy.random.choice(a,
    		    size = None, 
            	    replace = True, 
            	    p = None)
    a 배열이면 원래의 데이터, 정수이면 arange(a) 명령으로 데이터 생성
    size 정수. 샘플 숫자
    replace 불리언. True이면 한번 선택한 데이터를 다시 선택 가능
    p 배열. 각 데이터가 선택될 수 있는 확률

    choice 예제

     

     

     

     

     

     

    정렬

    sort

    • 배열.sort() : 원본 배열의 값이 변경됨
    • np.sort(배열) : 정렬된 배열의 복사본 생성, 원본은 변경 없음

    sort 예제
    sort 예제

     

     

    'ABC 부트캠프 > 파이썬 라이브러리' 카테고리의 다른 글

    10일차 - Matplotlib, Seaborn  (0) 2023.04.10
    9일차 - Pandas 2  (0) 2023.04.02
    8일차 - Pandas 1  (0) 2023.03.27
    6일차 - Numpy 1  (0) 2023.03.21

    댓글