달나라 노트

Python numpy : linspace (일정 간격으로 나눠진 array 생성하기, 구간 나누기) 본문

Python/Python numpy

Python numpy : linspace (일정 간격으로 나눠진 array 생성하기, 구간 나누기)

CosmosProject 2021. 3. 29. 22:02
728x90
반응형

 

 

 

linspace(start, stop, num, endpoint=True/False)

numpy의 linspase는 start부터 stop까지 num에 표시된 개수의 숫자만큼 동일한 간격을 가질 수 있도록 나눕니다.

 

endpoint=True -> 끝값(stop)이 결과에 포함됩니다. (default)

endpoint=False -> 끝값(stop)이 결과에 포함되지 않습니다.

 

무슨 소린지 말로 설명하면 어려우니 실제 예시를 봅시다.

 

 

import numpy as np

np_linspace_test = np.linspace(start=0, stop=10, num=5)
print(type(np_linspace_test))
print(np_linspace_test)

list_linspace_test = list(np_linspace_test)
print(list_linspace_test)



-- Result
<class 'numpy.ndarray'>
[ 0.   2.5  5.   7.5 10. ]
[0.0, 2.5, 5.0, 7.5, 10.0]

위 예시는 linspace를 이용하여 0부터 10까지의 숫자를 총 5개로 나눈다는 의미입니다.

 

총 숫자가 5개가 되어야 하며, start인 0과 stop인 10이 포함되어야 합니다.

(끝값으로 명시된 10이 포함되어야하는 이유는 endpoint의 기본값이 True이기 때문입니다.)

따라서 5개 숫자 중 시작값인 0과, 끝값인 10은 이미 포함된 셈이죠.

따라서 남은 3개의 숫자가 0~10 사이에서 균일한 간격으로 나뉘어져야 합니다.

 

따라서 0, 2.5, 5, 7.5, 10 이렇게 나눠진겁니다.

return값은 numpy.ndarrary이고 list method를 이용해 list로 변경할 수도 있습니다.

 

 

import numpy as np

np_linspace_test = np.linspace(start=0, stop=10, num=5, endpoint=False)
print(list(np_linspace_test))



-- Result
[0.0, 2.0, 4.0, 6.0, 8.0]

endpoint값을 False로 지정했습니다.

이건 0부터 10까지의 숫자를 총 5개로 나눕니다.

단, endpoint=False이기 때문에 마지막에 10이 포함되지 않습니다.

 

즉, 첫 값은 0이며 그 이후에 나올 4개의 값을 10 미만까지 균일한 간격으로 나눠야합니다.

 

따라서 0, 2, 4, 6, 8이 반환되었습니다.

 

 

 

 

import numpy as np

np_linspace_test = np.linspace(start=0, stop=10, num=5, retstep=True)
print(np_linspace_test)


np_linspace_test = np.linspace(start=0, stop=20, num=5, retstep=True)
print(np_linspace_test)



-- Result
(array([ 0. ,  2.5,  5. ,  7.5, 10. ]), 2.5)
(array([ 0.,  5., 10., 15., 20.]), 5.0)

retstep옵션을 True로 하면 나눠진 각 인자들의 간격 정보도 포함하여 return합니다.

 

 

 

 

 

 

728x90
반응형
Comments