본문 바로가기
Python/python 응용: 수학 및 과학

Python NumPy 배열 만들기: arange()와 linspace()의 차이

by 철이88 2022. 12. 28.
반응형

때로는 1부터 100까지 정수의 배열과 같이 많은 원소를 가지면서 규칙적으로 증가하는 배열이 필요할 수 있습니다. 이 경우 원소가 많기 때문에 일일이 입력하는 것은 번거로운 일입니다. 이럴 때 Python의 NumPy 모듈을 이용하여 원하는 배열을 만들 수 있습니다. 이번 포스팅은 NumPy의 arange()와 linspace() 함수들을 이용해서 배열을 만들어 보겠습니다.

NumPy의 arange() & linspace()함수


Python의 NumPy모듈은 일정한 간격의 값들을 원소로 하는 배열을 만들 수 있는 함수들을 제공합니다.
첫 번째는 arange() 함수로 보통 다음과 같이 세 개의 인자를 입력합니다.

import numpy as np
ar = np.arange(0, 5, 1)

여기서 인자들은 순서대로 배열의 시작 값, (포함되지 않는) 상한 값, 그리고 증가되는 값을 의미합니다.
배열 ar은 [0, 1, 2, 3, 4]입니다.
위 예에서 생성되는 배열은 ‘5’를 포함하지 않으니 주의하시기 바랍니다.

두 번째는 이와 유사한 linspace() 함수입니다.

import numpy as np
lin = np.linspace(0, 5, 6)

arange()의 경우와는 다르게 linspace()는 두 번째 인자가 배열에 포함됩니다.
여기서 첫 번째 인자 ‘0’은 역시 배열의 시작 값, 두 번째 인자 ‘5’는 배열의 마지막 항이 됩니다. 

 

다른 점은 세 번째 인자 ‘6’이 원소(항)의 개수를 의미한다는 것입니다.
arange()와는 달리 원소의 개수에 맞춰 균등한 증가분을 자동으로 계산해 줍니다.
그래서 위 예의 배열 lin은 [0., 1., 2., 3., 4., 5.]가 됩니다.

재밌는 것은 위 예의 ar 배열은 정수형(int) 항을 갖고, lin은 실수형(float)을 가지는 것입니다.

다음과 같이 인자들을 살짝 바꿔보면 arange()와 linspace()의 차이를 좀 더 명확히 알 수 있습니다.

import numpy as np
ar = np.arange(0, 5.0, 1)

또는

import numpy as np
ar = np.arange(0, 5.1, 1)

여기서 첫 번째 예의 배열은 [0., 1., 2., 3., 4.],
두 번째의 경우는 [0., 1., 2., 3., 4., 5.]입니다.




반응형

댓글