array 각 성분에 대한 특정계산  함수

  • 1부터 9까지 정수 array를 만들고, np.sqrt( arr )매소드를 사용해보자.
    cf) np.arange( n ) 은 0부터 n-1까지 / (1, n)은 1부터 n-1까지 정수array 생성
    np.sqrt( arr) 매소드는 각 array성분에 제곱근을 입힌다.
    image
  • np.log10(arr)은 각 성분에 상용로그를 입힌 array를 생성한다.
    image

2개이상의 array에 대한 각 성분 비교 함수

  • 랜덤으로 1x8 array 2개를 만들고, np.maxium( arr1, arr2 )함수를 이용해서, 각 성분 중 큰 성분을 골라내서 새로운 array을 만든다.
    cf) np.random.randn( n )은 일차원 1xn array / (n, m)은 2차원 n X m array 랜덤생성
    image
  • 그외 참고할만한 함수
    image



Numpy 통계함수

앞서 학습한, 한 array의 각 성분에 대한 계산 이외에, array 전체성분에 대한 각종 통계량을 계산할 수 있는 함수들이 있다.
np. 이 아닌 array.으로 시작하는 것이 특징이다.

  • 크기가 5x4 랜덤 array를 생성하고 arr.sum()함수를 이용해서 array의 전체성분의 합을 구한다.
    image
  • arr.mean()을 이용해서 array의 전체성분의 평균을 구한다.
    image
  • 그 외 한 array에서 적용되는 통계함수
    image


행 방향 or 열 방향의 성분들만 계산하는 통계함수를 써보자.
array로 나타낼 수 있는 데이터는 일반적으로,  행이  한 사람or 한 item을 의미하고, 열이 각 속성을 의미하는 것이 많다.

  • arr.sum( axis = 0)은 sum()함수의 인자에 axis=0을 넣음으로써, 행 방향 (↓) 즉, 각 열들의 합을 구할 수 있다.
    image
  • arr.sum( axis =1)은 열 방향(→) 즉, 각 행들의 합을 구할 수 있다.
    image


특정 조건을 만족하는 성분을 셀 때 유용한 함수

  • array에 조건문을 달면, 마스크(boolean indexing)을 생성하는 것을 배웠다. 이러한 마스크에다가 sum()함수를 적용할 수 있다.
    ( arr>0 ).sum()을 하면, array의 성분들이 True는 1로, False는 0으로 계산되서 합계가 나온다. 결과가 9이 나왔다면, 성분들 중 0보다 큰 성분은 9개이다.
    결과적으로, ( array 조건).sum()함수조건을 만족하는 성분의 총 개수이 된다.
    image


정렬함수

데이터상에서 Top30, 상위5% 등의 데이터를 구하는 방법이 바로 정렬함수를 사용하는 것이다.

  • 8열의 성분들을 작은것부터 오름차순으로 정렬하려면,  np.sort( arr) 함수를 이용한다.
    image
  • 이제 큰것부터 내림차순으로 정렬하기 위해서는, 파이썬 일종의 꼼수이니, 외워서 사용하자.
    np.sort( arr ) [  ::-1 ]은 내림차순으로 각 성분들을 정렬한다. np.sort(arr)를 호출 한 결과에 특이한 인덱스[::-1]를 붙히는 것이다.
    image

2차원 array에서도 정렬함수를 적용할 수 있다.

  • 2차원 5 x3 array에서도 마찬가지로 오름차순을 하기 위해서는 np.sort( ) 함수를 호출하지만, 차이점은 인자값에 추가로 axis가 들어간다.
    즉, np.sort( arr , axis= 0)을 오름차순으로 정렬한다.
    image
    마찬가지로 (arr, axis =1)을 인자값으로 주면, 각 행을 오름차순으로 정렬한다.

    이 때, 각 열을 오름/내림차순으로 정렬(axis=0)하면, 한 행을 기준으로 묶여있던 성분들이 뒤섞여버린다. 즉, 서로다른 행간에 성분들이 섞여버리게 된다.
    우리가 주로할 작업은, 특정 열(각 item의 특정 속성)을 기준을 으로 행 단위(item단위)로 오름차순으로 정렬하는 것을 주로 할 것인데,
    sort함수만으로는 우리가 원하는 결과를 얻을 수 없다. 추후 추가적인 조취를 취해야한다.


많은 수의 성분(150개)을 가진 일차원 array를 랜덤하게 만들어서, 상위 5%의 인덱스 값이 무엇인지 확인해보자.

  1. 먼저 내림차순으로 sorting을 한다. np.sort(large_arr)[::-1]
    image
  2. 전체 성분의 5%에 해당하는 인덱스를 내림차순정렬된 sort()에다가 반영해준다. np.sort(large_arr)[::-1][ int(0.05* len( large_arr))]
    (1)  len( large_arr )array의 총 길이를 구한다.
    (2)  총 길이에 0.05를 곱하여, 상위 5%에 해당하는 길이를 구한 뒤 정수형으로 형변환해준다. int ( 0.05 * 150 ) = 7
    (3) 그값을 내림차순으로 정렬한 array에다가 인덱스로 반영하면, index가 7인 성분이 나올 것이다.(원래는 –1 해줘야.. 8이 아닌 7번째 나올?)
    image


Numpy array에 사용되는 또다른 유용함수

미리 준비한 1차원 array을 보면, 중복된 성분을 가진다. 이 때 np.unique( arr ) 함수를 통해 중복된 성분을 제외한 array를 반환한다.
cf) ints에 unique()함수를 써서 생성한 array를 보니,  중복된 것을 제외하면서 숫자는 오름차순으로 정렬되네!

image

+ Recent posts