HOWTO · Python

Python에서 부동 숫자 범위 가져 오기

이 튜토리얼에서는 range() 함수를 사용하여 Python에서 부동 소수점 값 시퀀스를 가져 오는 방법을 보여줍니다.

이 페이지의 내용

이 자습서에서는 Python에서 부동 소수점 값 시퀀스를 가져 오는 다양한 방법을 살펴 봅니다. 단계 크기가0.1인 일련의 숫자가 필요하지만 문제는range()함수가 float를 입력으로 받아들이지 않고 대신TypeError를 반환한다는 것입니다.

아래에 설명 된 방법을 사용하여 Python에서 균일 한 단계 크기로 부동 소수점 값 시퀀스를 생성 할 수 있습니다.

Python에서numpy.arange()메서드를 사용하여 부동 소수점 숫자 범위 가져 오기

numpy.arange(start, stop, step)메소드는step값과 동일한 단계 크기로startstop값 내의 일련의 값을 리턴합니다. startstep인수의 기본값은 각각 0과 1입니다.

numpy.arange()메소드 사용의 장점은 float 값의 범위를 생성 할 수 있다는 것입니다. 그러나 이것은 Python의 기본 기능이 아니며이를 사용하려면NumPy라이브러리가 필요합니다.

아래 예제 코드는numpy.arange()메소드를 사용하여0.1과 같은 단계 크기로0에서1까지의 값 시퀀스를 가져 오는 방법을 보여줍니다.

import numpy as np

seq = np.arange(0, 1, 0.1)
print(seq)

출력:

[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

Python의 리스트 내포을 사용하여 부동 소수점 숫자 범위 가져 오기

리스트 내포은 Python의 기존 목록에서 새 목록을 만드는 구문 방법입니다. range()메소드에 의해 반환 된 값 시퀀스에서 새 목록을 생성하여 부동 값의 범위 또는 시퀀스를 생성 할 수 있습니다.

range()메소드는 정수 시퀀스 만 생성 할 수 있으므로 원하는 시퀀스를 얻으려면 시퀀스의 각 값을 필요한 부동 소수점 값으로 곱하거나 나눠야합니다. 정수, 즉3을 부동 소수점 값0.1과 곱하면0.30000000000000004가 반환되므로 정수를10으로 나누는 것이 부동 값 시퀀스를 생성하는 데 선호되어야하는 이유입니다.

아래 예제 코드는 리스트 내포 메서드를 사용하여 Python에서 float 값의 범위 또는 시퀀스를 가져 오는 방법을 보여줍니다.

seq = [x / 10 for x in range(0, 10)]
print(seq)

출력:

[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

Python의 Generator Comprehension을 사용하여 부동 소수점 숫자 범위 가져 오기

생성기 이해는 Python에서 반복 가능한 생성기 객체를 생성하는 목록 이해와 유사한 구문 접근 방식입니다. next()메소드를 사용하여 생성기에서 새 값에 액세스하거나for루프를 사용하여 전체 시퀀스를 반복 할 수 있습니다.

아래 예제 코드는 생성기 이해를 사용하여 Python에서 부동 소수점 범위를 가져 오는 방법을 보여줍니다.

seq = (x / 10 for x in range(0, 10))
for x in seq:
    print(x, end=" ")

출력:

0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 

Python의 Generator 함수를 사용하여 부동 소수점 숫자 범위 얻기

생성기 이해가 Python에서 생성기 객체를 가져 오는 간결하고보다 간단한 방법이지만 생성기 함수는start,stopstep값을 사용하여 부동 소수점 값 범위를 가져 오는 재사용 가능하고 더 나은 방법입니다. 우리가 선택한.

아래 예제 코드는 Python의range()함수와 유사한yield키워드를 사용하여 생성기 함수를 만드는 방법을 보여줍니다.

def myrange(start, stop, step):
    while start < stop:
        yield start
        start = start + step


seq = myrange(0.0, 1.0, 0.1)

for x in seq:
    print(x)

Python에서numpy.linspace()메서드를 사용하여 부동 소수점 숫자 범위 가져 오기

numpy.arange()메소드와 같은numpy.linspace()메소드는start값에서stop값까지 일련의 값을 반환합니다. step인수 대신numpy.linspace()메소드는start에서stop값까지 생성 할 값의 수를 지정하는num인수를 사용합니다.

따라서numpy.linspace()메소드에num값의 수를 제공해야합니다. 다음 공식은start,stopstep값을 사용하여num의 값을 계산할 수 있습니다.

num = (stop - start)/step

아래 예제 코드는numpy.linspace()를 사용하여step0.1과 같은0에서1까지의 부동 소수점 범위를 생성하는 방법을 보여줍니다. 필요한 시퀀스의num값은(0 - 1)/0.1 = 10입니다.

seq = np.linspace(0, 1, 10, endpoint=0)
print(seq)

출력:

array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

endpoint인수는 시퀀스가 ​​기본적으로0에서 시작하므로 시퀀스의 마지막 값을 포함할지 여부를 지정합니다.