【비보】모두가 빠지는 `np.arange()`의 함정
np.arange() 함정
「 Python을 사용하여 0.1마다 for 문을 돌리십시오 – Kaggle Note 」라고 하는 기사가 있었다.
for 문을 사용하여 소수점을 반복하고 싶을 때는 가끔 있습니다. 이번에는 그것을 실현하는 방법을 써 갑니다. 0~1을 0.1 단위로 반복하는 가정입니다.
그렇다.
기사에서는 「range를 사용하는 방법」과 「numpy를 사용하는 방법」이라고 내걸고 있다.
「range를 사용하는 방법」이란 다음과 같은 것이다.
def myrange():
gen = range(0, 10, 1)
return [i/10 for i in gen]
myrange()
# [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
이것은 문제없는 코드입니다.
계속해서, 「numpy를 사용하는 방법」으로서 이하와 같은 코드를 내건다.
import numpy as np
def myrange2():
data = np.arange(0.0, 1.0, 0.1)
data_round = np.round(data, 1)
return [i for i in data_round]
myrange2()
# [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
이것은 하지 말라.
이번 '0~1을 0.1씩'의 경우 우연히 우연히 문제 없지만, 값이 바뀌면 이야기가 바뀐다.
「0~2.1을 0.3씩」을 해 본다.
우선은 "range를 사용하는 방법".
def myrange():
gen = range(0, 21, 3)
return [i/10 for i in gen]
myrange()
# [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8]
이것이 모범 해답.
「numpy를 사용하는 방법」에서는 이하와 같이 된다.
import numpy as np
def myrange2():
data = np.arange(0.0, 2.1, 0.3)
data_round = np.round(data, 1)
return [i for i in data_round]
myrange2()
# [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1]
알 수 있었을까. 종단이 잘못되어 있는 것이다.
np.arange()
의 스텝수에 소수를 주어서는 안 된다.
Reference
이 문제에 관하여(【비보】모두가 빠지는 `np.arange()`의 함정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nkay/items/e2b1c0e98a3c92320acc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def myrange():
gen = range(0, 10, 1)
return [i/10 for i in gen]
myrange()
# [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
import numpy as np
def myrange2():
data = np.arange(0.0, 1.0, 0.1)
data_round = np.round(data, 1)
return [i for i in data_round]
myrange2()
# [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
def myrange():
gen = range(0, 21, 3)
return [i/10 for i in gen]
myrange()
# [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8]
import numpy as np
def myrange2():
data = np.arange(0.0, 2.1, 0.3)
data_round = np.round(data, 1)
return [i for i in data_round]
myrange2()
# [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1]
Reference
이 문제에 관하여(【비보】모두가 빠지는 `np.arange()`의 함정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nkay/items/e2b1c0e98a3c92320acc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)