[Python Data Analysis]10.array 관련 함수 사용하기


array 관련 함수 사용하기

각 성분에 적용되는 함수

numpy에서는 array에 적용할 수 있는 다양한 함수를 제공합니다. 이들 중 array의 각 성분에 대하여 특정한 계산을 일괄적으로 수행하기 위한 함수들이 있습니다.

arr array가 정의되어 있다고 할 때, np.sqrt() 함수를 적용하면 arr array의 각 성분에 대해 제곱근을 일괄적으로 계산합니다. 반면 np.log10() 함수를 적용하면 각 성분에 대해 밑이 10인 상용로그 값을 계산합니다.

numpy에서 한 개의 array의 각 성분에 적용되는 함수 정리
함수설명
abs각 성분의 절댓값 계산
sqrt각 성분의 제곱근 계산 (array ** 0.5 의 결과와 동일)
square각 성분의 제곱 계산 (array ** 2 의 결과와 동일)
exp각 성분을 무리수 e의 지수로 삼은 값을 계산
log, log10, log2자연로그(밑이 e), 상용로그(밑이 10), 밑이 2인 로그를 계산
sign각 성분의 부호 계산 (+인 경우 1, -인 경우 -1, 0인 경우 0)
ceil각 성분의 소수 첫 번째 자리에서 올림한 값을 계산
floor각 성분의 소수 첫 번째 자리에서 내림한 값을 계산
isnan각 성분이 NaN(Not a Number)인 경우 True를, 그렇지 않은 경우 False를 반환
isinf각 성분이 무한대(infinity)인 경우 True를, 그렇지 않은 경우 False를 반환
cos, cosh, sin, sinh, tan, tanh각 성분에 대한 삼각함수 값을 계산

만약 크기가 같은 두 개의 array x, y가 아래와 같이 주어졌을 때, np.maximum() 함수를 적용하면 두 array를 동일한 위치의 성분끼리 비교하여 값이 더 큰 성분을 선택, 새로운 array의 형태로 제시합니다.

    x = np.array([ 0.97121145,  1.74277758,  0.17706708, -1.14078851,  1.02197222,
                     -0.75747493,  0.4994057 , -0.03462392])
    y = np.array([ 0.91984849,  1.98745872, -0.11232596,  1.47306221,  1.24527437,
                   -0.77047603,  0.30708743, -1.76476678])
    np.maximum(x, y)
    >>> array([ 0.97121145,  1.98745872,  0.17706708,  1.47306221,  1.24527437,
                   -0.75747493,  0.4994057 , -0.03462392])
numpy에서 두 개의 array의 각 성분에 적용되는 함수 정리
함수설명
add두 array에서 동일한 위치의 성분끼리 더한 값을 계산 (arr1 + arr2의 결과와 동일)
subtract두 array에서 동일한 위치의 성분끼리 뺀 값을 계산 (arr1 - arr2의 결과와 동일)
multiply두 array에서 동일한 위치의 성분끼리 곱한 값을 계산 (arr1 * arr2의 결과와 동일)
divide두 array에서 동일한 위치의 성분끼리 나눈 값을 계산 (arr1 / arr2의 결과와 동일)
maximum두 array에서 동일한 위치의 성분끼리 비교하여 둘 중 최댓값을 반환
minimum두 array에서 동일한 위치의 성분끼리 비교하여 둘 중 최솟값을 반환

통계 함수

numpy에서는 array 내 전체 성분에 대한 통계량을 계산하는 함수 또한 제공합니다. 예를 들어 arr array가 정의되어 있을 때, .sum() 함수를 적용하면 arr array 내 모든 성분의 합을 계산하며, .mean() 함수를 적용하면 arr array 내 전체 성분에 대한 평균값을 계산합니다.

array에 대하여 합이나 평균 등을 계산할 때, 전체 성분 대신 ‘행 방향’ 혹은 ‘열 방향’의 성분들에 대해서만 합 혹은 평균 등을 계산하도록 할 수 있습니다. 2차원 array에 대하여 .sum(axis=0)을 실행하면 ‘행 방향’으로 성분들의 합을 구하게 되어, 결과적으로 각 열의 합을 계산한 결과를 산출합니다. 반면 .sum(axis=1)을 실행하면 ‘열 방향’으로 성분들의 합을 구하게 되여, 곧 각 행의 합을 계산한 결과를 산출합니다.

numpy의 array에 적용되는 통계 함수 정리

numpy의 array에 적용되는 통계 함수 정리
함수설명
sum전체 성분의 합을 계산
mean전체 성분의 평균을 계산
std, var전체 성분의 표준편차, 분산을 계산
min, max전체 성분의 최솟값, 최댓값을 계산
argmin, argmax전체 성분의 최솟값, 최댓값이 위치한 인덱스를 반환
cumsum맨 첫번째 성분부터 각 성분까지의 누적합을 계산 (0에서부터 계속 더해짐)
cumprod맨 첫번째 성분부터 각 성분까지의 누적곱을 계산 (1에서부터 계속 곱해짐)

정렬 함수 및 기타 함수

데이터 상에서 TOP 30 혹은 상위 5%에 해당하는 값이 무엇인지 추출해야 하는 경우가 자주 있는데, 정렬 함수는 이와 같은 작업을 위해 필수적인 함수라고 할 수 있습니다.

    arr = array([-0.21082527, -0.0396508 , -0.75771892, -1.9260892 , -0.18137694,
                   -0.44223898,  0.32745569,  0.16834256])

위와 같은 arr array가 정의되어 있다고 할 때, np.sort() 함수를 적용하면 arr array의 성분이 오름차순으로(크기가 커지는 순서대로) 정렬됩니다.

    np.sort(arr)
    >>> array([-0.21082527, -0.0396508 , -0.75771892, -1.9260892 , -0.18137694,
                 -0.44223898,  0.32745569,  0.16834256])

만약 위의 경우에서 내림차순으로 정렬하고 싶다면, np.sort(arr)[::-1]을 실행하면 됩니다. 이는 numpy 인덱싱 시 사용되는 일종의 꼼수이니 잘 기억해 두시면 유용할 것입니다.

정렬 함수는 2차원 array에도 적용할 수 있습니다.

    arr2d = np.array([[-1.25627232,  1.65117477, -0.04868035],
                       [ 0.7405744 , -0.67893699, -0.28428494],
                    [ 0.02640821, -0.29027297,  0.34441534],
                    [ 0.68394722,  0.26180229,  0.76742614],
                    [ 1.00806827,  0.77977295, -1.36273314]])

2차원 arr2d array를 하나 정의하였을 때, np.sort(arr, axis=0)을 실행하면 ‘행 방향’으로 오름차순 정렬이 이루어집니다. axis 인자의 값을 1로 바꾸면 ‘열 방향’으로 오름차순 정렬이 이루어질 것입니다.

    np.sort(arr, axis=0)
    >>> array([[-1.25627232, -0.67893699, -1.36273314],
               [ 0.02640821, -0.29027297, -0.28428494],
               [ 0.68394722,  0.26180229, -0.04868035],
               [ 0.7405744 ,  0.77977295,  0.34441534],
               [ 1.00806827,  1.65117477,  0.76742614]])

만약 길이가 아주 긴 large_arr array가 정의되어 있을 때, 해당 array 상에서 상위 5%에 위치하는 값은 다음과 같이 찾아낼 수 있습니다.

    np.sort(large_arr)[::-1][int(0.05 * len(large_arr))]

large_arr을 먼저 오름차순으로 정렬한 뒤, int(0.05 * len(large_arr))을 통해 상위 5%에 해당하는 인덱스를 계산한 후, 이를 사용하여 정렬 결과에 대한 인덱싱을 수행하는 과정으로 진행하였습니다.

마지막으로, 중복된 성분을 포함하고 있는 array에 대하여, np.unique() 함수를 사용하면 중복된 값을 제외한 유니크한 값만을 추출할 수 있습니다. 예를 들어 해당 array의 이름이 names 였다면, np.unique(names)을 실행하면 중복된 성분이 제거된 새로운 array를 얻을 수 있습니다.




© 2017. by freelife

Powered by freelife