Table of Contents

Python

Numpy.arange / Numpy.linespace

꼬꼬마코더 2024. 4. 20. 14:23
728x90

다음 numpy arange 문제를 풀어보세요.

numpy.arange([start]stop[step]dtype=None*like=None)

np.arange(0, 5, 0.5, dtype=int)
  1. 시작 값(0): 배열의 시작 값입니다. 이 예에서는 0부터 시작합니다.
  2. 종료 값(5): 배열 생성이 종료되는 값으로, 이 값은 포함되지 않습니다. 즉, 5는 배열에 포함되지 않습니다.
  3. 간격(0.5): 배열의 각 요소 간의 간격을 지정합니다. 이 경우 0.5씩 증가합니다.
  4. dtype=int: 배열의 데이터 타입을 지정합니다. 여기서는 int (정수) 타입을 지정하여, 결과적으로 생성되는 배열의 요소들이 정수형으로 변환됩니다.

둘 중 정답은?

1번 array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4])
2번 array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

 

네...바로 2번입니다. 놀랍죠?

 

0,

0+0.5=0.5 (float) -> 0 (int)

0+0.5+0.5=1.0(float) -> 1(int) 이렇게 0부터 0.5씩 증가하는 결과값에 소수점을 제거하여 inteager 정수형을 만드는게 아니라

 

0,

0+0.5=0.5(float) -> 0 (int)

0+0.5=0.5(float) -> 0 (int) 앞의 결과값마다 소수점을 제거하여 정수형을 만들고 다시 그 결과값을 base로 계산하게 됩니다.

 

그래서 정답은 2번입니다.

 

 

arange말고 다음과 같이 linespace를 쓸 수도 있습니다.

numpy.linspace(startstopnum=50endpoint=Trueretstep=Falsedtype=Noneaxis=0)

np.arange(0, 5, 0.5, dtype=float)
>>>
array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
np.linspace(0, 5, num=10)
>>>
array([0.        , 0.55555556, 1.11111111, 1.66666667, 2.22222222,
       2.77777778, 3.33333333, 3.88888889, 4.44444444, 5.        ])

linespace는 endpoint가 True이기 때문에 5가 포함됩니다. 

np.linspace(0, 5, num=10, dtype=int)
>>>
array([0, 0, 1, 1, 2, 2, 3, 3, 4, 5])

0부터 5까지 중 10개로 나눈 후 dtype을 적용하기 때문에 결과값은 array([0,0,0,0,0,0,0,0,0,0]) 이 아닙니다.

'Python' 카테고리의 다른 글

Numpy 크기차원변경  (1) 2024.04.20
예외처리문 try - except - else - finally 구문  (0) 2024.04.20
.MD파일? 마크다운MarkDown 파일!!  (0) 2024.04.19
NaN과 None을 구분하려면?  (0) 2024.04.18
NaN과 Null(None)  (0) 2024.04.18