numpy에 일정 간격을 가지는 ndarray를 생성할 수 있는 함수에는 numpy.arange와 numpy.linspace가 있습니다. 상황에 따라 조금씩 다르게 사용되는 두 함수에 대해 정리해 보려 합니다.
1. arange
- 생성되는 ndarray의 개수는 모르고, 간격만 결정합니다. 파이썬의 리스트와 거의 동일합니다.
- arange는 총 4개의 인자를 받습니다. (start, stop, step, dtype)
- arange(start, stop, step, dtype=None), start부터 stop까지 step 간격을 가지는 ndarray를 생성합니다.
- 파이썬에서 제공되는 range함수와 거의 동일하게 작돟하며, stop은 ndarray에 포함되지 않습니다.
- numpy의 ndarray는 파이썬 리스트와 다르게 array 안 요소들의 자료형이 동일해야 합니다. dtype을 설정하면 ndarray 안에 있는 모든 요소들이 동일한 자료형으로 설정됩니다.
- step이 정수가 아닌 0.1, 0.2 등 부동소수형이면 ndarray안 요소들이 자동으로 float형으로 저장됩니다.
import numpy as np
print(np.arange(0, 10)) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
print(np.arange(0, 10, 2)) # 0, 2, 4, 6, 8
print(np.arange(0, 10, 2, dtype=float)) # 0., 2., 4., 6., 8.
print(np.arange(0, 11, 2)) # 0, 2, 4, 6, 8, 10
2. linspace
- 일정한 간격을 가지는 ndarray를 생성합니다. 요소들간의 간격은 모르고 개수만 정해집니다.
- linspace는 총 6개의 인자를 받습니다. (start, stop, num, endpoint, retstep, dtype)
- start부터 stop까지 같은 간격을 가지며 num 수만큼의 크기를 가지는 ndarray를 생성합니다.
- num: default=50이며, 반환값인 ndarray가 가지는 요소의 개수를 지정합니다.
- endponit: 마지막 원소를 포함할지 여부를 결정합니다. default=True입니다.
print(np.linspace(10, 20, 3))
print(np.linspace(10, 20, 3, endpoint=False))
print(np.linspace(10, 20, 4))
num = n 일 때, endpoint가 포함되지 않는 경우에 ndarray가 갖는 요소는, num = n + 1일 때의 ndarray에서 마지막 요소만 제외된 것과 동일한 결과입니다.
- retstep: 반환할 때, 계산된 step의 크기를 배열과 같이 반환할지 정합니다. default=False입니다.
- dtype: 반환되는 ndarray의 자료형을 결정합니다.
print(np.linspace(0, 10, 2) # [0., 10.]
print(np.linspace(0, 10, 3) # [0., 5., 10.]
print(np.linspace(0, 10, 4) # [0., 3.33333, 6.66667, 10.]
print(np.linspace(0, 10, 2, retstep=True)) # ([0., 10.], 10.0)
print(np.linspace(0, 10, 3, retstep=True)) # ([0., 5., 10.], 5.0)
print(np.linspace(0, 10, 4, retstep=True)) # ([0., 3.33333, 6.66667, 10.], 3.33333)
3. 정리
arange | linspace | |
함수 기능 | 동일한 간격의 ndarray를 생성 | |
간격(step) | 입력받음 | 함수가 설정함 |
ndarray의 요소 개수 | 함수가 설정함 | 입력받음 |
'Python > Syntax' 카테고리의 다른 글
[Pandas] 데이터 프레임 인덱스 초기화 (0) | 2022.07.15 |
---|---|
[Pandas] 다른 데이터프레임 속성값을 이용해 값 선택, 데이터프레임 순회 (0) | 2022.07.15 |
[Matplotlib] 음수(마이너스) 깨짐 (0) | 2022.07.09 |
[Matplotlib] 한글 폰트 설정, 글꼴 변경 + 추가 (0) | 2022.07.08 |
[Matplotlib] 그래프 스타일 (0) | 2022.07.08 |