[Python] 파이썬 numpy 로그 계산 - log, log2, log10, log1p
안녕하세요! 나비입니다 🦋
지난 포스팅에서는 파이썬 numpy 라이브러리의 지수와 제곱근 관련된 메소드(함수)를 소개드렸었는데요, 이번에는 반대로 로그 메소드를 설명해 보려고 합니다.
총 4가지 순서대로 소개할 텐데요, 메소드 이름은 log, log2, log10, log1p 이렇게 4가지입니다.
log은 주어진 입력에 밑이 e인 로그, 즉 자연로그(natural logarithm)를 취해서 반환하는 메소드입니다.
log2는 밑이 2인 로그를 취해주고요, log10은 밑이 10인 로그 (상용로그)를 취한 값은 반환합니다.
log1p는 입력값 x에 대해 자연로그 log(1+x)를 반환하는 메소드입니다.
아래서 예시 소스코드를 보여드릴게요!
numpy.log
import numpy as np
A = np.array([1, np.e, np.e^3, 0])
print(np.log(a))
[0.0, 1.0, 3.0, -inf]
이렇게 array 형태로 입력하면, 자연로그 씌운 값을 똑같이 array로 반환해줍니다. 그리고, 로그함수의 정의역에 없는 0을 입력하면 “-inf”를 출력하는데요, 마이너스 무한대, 즉 -infinite를 줄여서 -inf 라고 출력해주는 겁니다.
import numpy as np
a = np.e
print(np.log(a))
1.0
배열이 아닌 숫자로 입력하면, 같은 기능을 수행한 후 숫자로 출력해주는데요, 이때 자료형은 float입니다.
numpy.log2
import numpy as np
A = np.array([2, 4, 8, 16])
print(np.log2(A))
a = 128
print(np.log2(a))
[1.0, 2.0, 3.0, 4.0]
7.0
np.log2 메소드도 마찬가지로, 밑이 2인 로그를 취한 값을 출력합니다. 배열, 숫자 모두 입력받을 수 있습니다. 숫자의 경우, float 형으로 출력해줍니다.
numpy.log10
import numpy as np
A = np.array([1, 10, 100])
a = 1000
print(np.log10(A))
print(np.log10(a))
[0.0, 1.0, 2.0]
3.0
np.log10도 이전 두 가지 메소드와 동일한 기능을 수행합니다. 배열, 숫자 모두 입력받습니다.
numpy.log1p
import numpy as np
a = np.log1p(1e-99)
b = np.log(1 + 1e-99)
print(a)
print(b)
1e-99
0.0
log1p(A)는 log(1+A)와 동일한 기능을 수행하지만, 매우 작은 숫자에 대해 log1p 메소드가 더 정확한 결과를 도출할 수 있습니다.
위 코드에서 보여드린 것처럼, 1e-99라는 작은 숫자를 입력했을 때, log1p는 제대로 된 값을 출력하지만 일반 log 메소드는 0을 출력해버립니다. 그렇기에 기능 자체는 동일하게 구현할 수 있더라도 log1p 메소드가 따로 만들어져 있습니다.
네 여기까지, 로그 계산과 관련된 파이썬 numpy의 4가지 메소드를 알아보았습니다.
긴 글 읽어주셔서 감사드리며, 도움이 되셨다면 구독과 좋아요 부탁드려요 ✨✨