Python Data/Python 실행

파이썬에서 기하평균(Geometric Mean) 계산하기

palefaceman 2022. 9. 26. 13:39

파이썬에서 기하평균(geometric mean)을 구하는 방법은 2가지가 있다.

 

방법 1: Scipy 라이브러리를 이용한 기하평균(geometric mean) 구하기

from scipy.stats import gmean

#기하평균(geometric mean) 구하기
gmean([value1, value2, value3, ...])

방법 2: Numpy 라이브러리를 이용하여 기하평균(geometric mean) 구하기

import numpy as np

#함수 생성
def g_mean(x):
	a = np.log(x)
    return np.exp(a.mean())
    
#기하평균(geometric mean) 구하기
g_mean)[value1, value2, value3, ...])

두 방법은 동일한 값을 반환한다.

 

실제 상황에서 두 가지 방법을 각각 어떻게 사용하는지 좀 더 살펴본다.

예시 1: Scipy 라이브러리를 이용한 기하평균(geometric mean) 구하기

아래 코드는 Scipy 라이브러리에서 어떻게 gmean()을 사용하여 어떻게 기하평균(geometric mean)을 구하는 지 보여준다.

from scipy.stats import gmean

#기하평균(geometric mean) 구하기
gmean([1,4,7,6,6,4,8,9])

4.81788719702029

기하평균(geometric mean)은 4.8179로 출력한다.

예시 2: Numpy 라이브러리를 이용하여 기하평균(geometric mean) 구하기

아래 코드는 Numpy 라이브러리에서 어떻게 gmean()을 사용하여 어떻게 기하평균(geometric mean)을 구하는 지 보여준다.

 

import numpy as np

#함수정의
def g_mean(x):
	a = np.log(x)
    return np.exp(a.mean())
    
#기하평균(geometric mean) 구하기
g_mean([1,4,7,6,6,4,8,9])

4.18788719702029

기하평균(geometric mean)은 4.8179로 Scipy에서 나온 기하평균(geometric mean) 값과 동일하다.

 

기하평균(geometric mean)이 '0'이 나올 경우

두 가지 기하평균(geometric mean)을 구하는 방법 모두 배열에 0이 하나라도 있으면 '0'을 반환한다.

 

그러므로 기하평균(geometric mean)을 구하기 전에 배열 안에 있는 '0'을 제거하는 코드를 실행한다.

 

#'0'이 포함된 배열 생성
x = [1,0,0,6,6,0,8,9]

#배열 안에 '0' 제거
x_new = [i for i in x if i !=0]

#업데이트 된 배열 보기
print(x_new)

[1,6,6,8,9]