자연로그(natural logarithm)는 지수 함수의 역함수로서 log(exp(x)) = x라는 관계가 성립합니다. 자연로그란 밑(base)이 e(약 2.71828)인 로그를 의미하며, np.log() 메서드는 입력값 x에 대한 자연로그를 요소별(elementwise)로 반환합니다. 만약 x가 스칼라라면 결과 역시 스칼라로 반환됩니다.
np.log() 함수의 매개변수
첫 번째 매개변수는 입력값으로, 배열 형태(array-like)의 데이터를 받습니다. 두 번째 매개변수인 out은 계산 결과가 저장될 위치를 지정합니다. 이 값을 제공할 경우 입력값들이 브로드캐스팅되는 형태(shape)와 일치해야 하며, 제공하지 않거나 None으로 설정하면 새로 할당된 배열이 반환됩니다. 튜플 형태로도 지정할 수 있는데(키워드 인자로만 가능), 이때 튜플의 길이는 출력값의 개수와 같아야 합니다.
로그 함수의 수학적 특성
로그는 다중값 함수(multivalued function)입니다. 즉, 각각의 x에 대해 exp(z) = x를 만족하는 z는 무수히 많이 존재합니다. NumPy에서는 허수부가 [-π, π] 범위에 속하는 z를 반환하는 것이 관례입니다.
실수형 입력 데이터 타입의 경우 log는 항상 실수 값을 반환합니다. 실수 또는 무한대로 표현할 수 없는 값에 대해서는 nan을 반환하고 유효하지 않은(invalid) 부동 소수점 오류 플래그를 설정합니다. 복소수 입력의 경우 log는 분지 절단(branch cut)이 [-inf, 0]에 위치하고 그 위쪽에서 연속인 복소 해석 함수로 동작합니다. 또한 log는 C99 표준을 준수하여 부동 소수점 음의 영(-0)을 무한히 작은 음수로 처리합니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다 −
import numpy as np
array() 메서드를 사용해 NumPy 배열을 생성합니다 −
arr = np.array([1, 2, np.e, np.e**2])
생성된 배열을 화면에 출력합니다 −
print("Our Array...\n",arr)
배열의 차원을 확인합니다 −
print("\nDimensions of our Array...\n",arr.ndim)
배열 객체의 데이터 타입을 확인합니다 −
print("\nDatatype of our Array object...\n",arr.dtype)
배열의 형태(shape)를 확인합니다 −
print("\nShape of our Array...\n",arr.shape)
자연로그 log는 지수 함수의 역함수이며 log(exp(x)) = x가 성립하고, 밑이 e인 로그입니다 −
print("\nResult (log)...\n",np.log(arr))
전체 예제 코드
import numpy as np
# array() 메서드를 사용해 NumPy 배열 생성
arr = np.array([1, 2, np.e, np.e**2])
# 배열 출력
print("Our Array...\n",arr)
# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)
# 배열 형태 확인
print("\nShape of our Array...\n",arr.shape)
# 자연로그 log는 지수 함수의 역함수이며, log(exp(x)) = x가 성립합니다.
# 자연로그는 밑이 e인 로그입니다.
print("\nResult (log)...\n",np.log(arr))
실행 결과
Our Array... [1. 2. 2.71828183 7.3890561 ] Dimensions of our Array... 1 Datatype of our Array object... float64 Shape of our Array... (4,) Result (log)... [0. 0.69314718 1. 2.]