numpy.geomspace() 함수는 로그 스케일에서 균등한 간격으로 배치된 숫자들의 집합, 즉 등비수열(geometric progression) 형태의 배열을 반환하는 NumPy 함수입니다.
유사한 함수와의 비교
numpy.linspace() – 시작값과 끝값 사이를 선형적으로 균등한 간격으로 나눈 숫자 배열을 생성합니다.
numpy.logspace() – 로그 스케일에서 균등한 간격으로 숫자를 생성하며, 시작과 끝을 지수(exponent) 값으로 지정한다는 점이 geomspace와 다릅니다.
numpy.geomspace() – 시작값과 끝값 자체를 직접 지정하며, 두 값 사이가 등비수열을 이루도록 숫자를 생성합니다.
문법(Syntax)
numpy.geomspace(start, stop, num=50, endpoint=True, dtype=None)
매개변수(Parameters)
start – 수열의 시작값입니다. 이 값은 반드시 0이 아닌 숫자여야 합니다.
stop – 수열의 마지막 값입니다.
num – 시작값과 끝값 사이에 생성할 요소의 개수입니다. 기본값은 50입니다.
endpoint – 끝값(stop)을 결과 배열에 포함할지 여부를 결정합니다. endpoint=True이면 stop 값이 배열의 마지막 항목으로 포함되고, endpoint=False이면 stop 값은 결과에 포함되지 않습니다.
dtype – 출력 배열의 데이터 타입을 지정합니다. 기본값은 None이며, 이 경우 입력값에 따라 자동으로 결정됩니다.
예제 1
1부터 2000까지 8개의 숫자를 등비수열 형태로 생성하는 예제입니다.
# numpy 임포트
import numpy as np
# geomspace() 함수 사용
x = np.geomspace(1, 2000, num=8)
print("X의 geomspace 결과:\n", x)출력 결과
X의 geomspace 결과: [1.00000000e+00 2.96193630e+00 8.77306662e+00 2.59852645e+01 7.69666979e+01 2.27970456e+02 6.75233969e+02 2.00000000e+03]
위 결과를 보면 각 숫자가 일정한 비율(약 2.96배)로 증가하는 것을 확인할 수 있습니다. 이것이 바로 등비수열의 특징입니다.
예제 2
이번에는 endpoint=False 옵션을 사용하여 끝값을 제외한 예제를 살펴보겠습니다.
# numpy 임포트
import numpy as np
# geomspace() 함수 사용
x = np.geomspace(2, 800, num=9, endpoint=False)
print("X의 geomspace 결과:\n", x)출력 결과
X의 geomspace 결과: [ 2. 3.89177544 7.57295802 14.73612599 28.67484658 55.79803176 108.57670466 211.27807602 411.12341312]
endpoint=False로 설정했기 때문에 끝값인 800은 수열에 포함되지 않고, 800에 도달하기 전까지의 값들만 등비수열 형태로 생성됩니다.
정리
numpy.geomspace()는 금융 계산, 신호 처리, 데이터 시각화에서 로그 스케일 축의 눈금 생성 등 비율 기반으로 값이 변화하는 데이터를 다룰 때 유용하게 활용됩니다. 선형 간격이 필요하면 linspace(), 지수 기반 로그 스케일이 필요하면 logspace(), 등비수열 간격이 필요하면 geomspace()를 사용하면 됩니다.