Python/Numpy

[Python] 파이썬 numpy 로그 계산 - log, log2, log10, log1p

나비🦋 2024. 4. 7. 17:19
반응형

안녕하세요! 나비입니다 🦋

지난 포스팅에서는 파이썬 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가지 메소드를 알아보았습니다.
긴 글 읽어주셔서 감사드리며, 도움이 되셨다면 구독과 좋아요 부탁드려요 ✨✨

반응형