ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ndarray
    Learn/머신러닝 2021. 5. 7. 14:27

    pandas를 쓰다보면 늘 함께 다루게되는 ndarray. (늘 에러메시지와 만나는 친구..)

    array는 생소한 개념이 아니므로 특이점 위주로만 살펴보려한다. 

     

    ndarray는 여러 타입이 섞일 수 없다. 

    list의 경우는 여러 타입이 섞여도 되므로 [1, 2, 'text'] 같은 형태가 가능하다. 

    그러나 ndarray는 이게 허용되지 않고, 자동으로 ['1', '2', 'text'] 형태로 바뀐다. 

     

    arange(range)

    array + range를 arange로 쓴다. 

    np.arange(5) 을 하면 [0, 1, 2, 3, 4] 가 생성된다. 

     

    zeros, ones

    직관적이다. shape을 주면 0, 1로 가득 채운다. 

     

    reshape (★)

    사이즈를 변경해준다. 다만 원본과 변환의 element 수는 같아야 한다. 

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]을 reshape(2, 5) 하면 [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]가 된다. 

    차원을 고정하려면 동적으로 reshape(-1, 5)를 줘도 같은 결과가 나온다. (2차원)

    reshape(-1, )로 주면 무조건 1차원이 나온다. 

     

    fancy indexing

    기본 인덱싱은 많이 써봤으니 패스. 이건 특별하진 않은데 이렇게도 쓸수있구나 싶다. 

    2차원 배열이 있을 때, array[[0, 2], 0:3] 이런식으로 쓰면

    1, 3번째 행의 0, 1, 2열이 선택된다. 

     

    boolean indexing (★)

    이미 pandas쓰면서 많이 쓰고있으니 패스. 

    True, False로 이루어진 ndarray를 넣으면 True에 해당하는 것만 반환한다. 

     

    sort

    디폴트는 오름차순 정렬. 

    내림차순 원하면 np.sort()[::-1]로 쓰면 된다고 한다.

    어짜피 sorting 방법은 많은지라 불편해서 이렇게 안쓰게 될 것 같긴한다. 

    np.sort(array)로 하면 inplace=False, array.sort()로 하면 inplace=True

     

    argsort (★)

    값이 아닌 정렬된 인덱스를 반환함. 

     

    선형대수 함수로 dot(내적), transpose(전치) 등등이 있긴한데 필요할때 찾아서 쓰면될듯. 

     

    ※ 인덱싱 관련

    [::-1]이 왜 reverse인지 궁금해서 찾아봤다. 

    일단 기본적으로 인덱스에 음수를 쓰는 것에 대해 살펴보면 음수는 뒤에서부터를 뜻한다. 

    a[-1]  # a의 마지막 값
    a[-2:] # a의 마지막 값 2개
    a[:-2] # a의 맨 뒤의 2개 제외하고 모두

    그리고 인덱싱은 크게 세 부분으로 구성된다. 

    a[start:stop:step] 

     

    step은 잘 안쓰긴 하는데 디폴트로 1이고 -1로 주면 reverse를 뜻한다. 

    즉 a[::-1]은 a[:]의 역방향이라고 보면 된다. 

    a[1::-1]도 어렵지 않다. 1부터 시작해서 역방향이니 앞의 두 개를 뜻한다. 

    'Learn > 머신러닝' 카테고리의 다른 글

    [Anomaly Detection] Isolation Forest  (0) 2022.08.11
    [Anomaly Detection] Local Outlier Factor (LOF)  (0) 2022.08.10
    [Anomaly Detection] 개요, 확률 분포 기반  (0) 2022.08.10
    Pandas 2부  (0) 2021.05.26
    Pandas 1부  (0) 2021.05.25

    댓글

Designed by Tistory.