728x90
파이썬을 이용하여 y = sinx 같은 그래프를 그리고 싶을 때 x를 어떻게 지정하는지 궁금한 경우가 있습니다.
구간 내에 숫자를 꼼꼼하게 채울 수 있는 np.linspace 함수를 사용할 수 있습니다.
사용법
# 기본형태
numpy.linspace('구간 시작점', '구간 끝점', '구간 내 숫자 개수')
1. 기본적인 사용법
import numpy as np
print(np.linspace(1, 2, 100)) # 1~2까지 숫자 100개(끝점 포함)
>>>
[1. 1.01010101 1.02020202 1.03030303 1.04040404 1.05050505
1.06060606 1.07070707 1.08080808 1.09090909 1.1010101 1.11111111
1.12121212 1.13131313 1.14141414 1.15151515 1.16161616 1.17171717
1.18181818 1.19191919 1.2020202 1.21212121 1.22222222 1.23232323
1.24242424 1.25252525 1.26262626 1.27272727 1.28282828 1.29292929
1.3030303 1.31313131 1.32323232 1.33333333 1.34343434 1.35353535
1.36363636 1.37373737 1.38383838 1.39393939 1.4040404 1.41414141
1.42424242 1.43434343 1.44444444 1.45454545 1.46464646 1.47474747
1.48484848 1.49494949 1.50505051 1.51515152 1.52525253 1.53535354
1.54545455 1.55555556 1.56565657 1.57575758 1.58585859 1.5959596
1.60606061 1.61616162 1.62626263 1.63636364 1.64646465 1.65656566
1.66666667 1.67676768 1.68686869 1.6969697 1.70707071 1.71717172
1.72727273 1.73737374 1.74747475 1.75757576 1.76767677 1.77777778
1.78787879 1.7979798 1.80808081 1.81818182 1.82828283 1.83838384
1.84848485 1.85858586 1.86868687 1.87878788 1.88888889 1.8989899
1.90909091 1.91919192 1.92929293 1.93939394 1.94949495 1.95959596
1.96969697 1.97979798 1.98989899 2. ]
리스트 안에 1과 2 사이의 숫자로 촘촘히 채워졌습니다.
2. 끝점을 포함하고 싶지 않은 경우
import numpy as np
print(np.linspace(1, 2, 100, endpoint=False, retstep=True)) # 끝점 미포함, 간격 출력
>>>
(array([1. , 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1 ,
1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.2 , 1.21,
1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3 , 1.31, 1.32,
1.33, 1.34, 1.35, 1.36, 1.37, 1.38, 1.39, 1.4 , 1.41, 1.42, 1.43,
1.44, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5 , 1.51, 1.52, 1.53, 1.54,
1.55, 1.56, 1.57, 1.58, 1.59, 1.6 , 1.61, 1.62, 1.63, 1.64, 1.65,
1.66, 1.67, 1.68, 1.69, 1.7 , 1.71, 1.72, 1.73, 1.74, 1.75, 1.76,
1.77, 1.78, 1.79, 1.8 , 1.81, 1.82, 1.83, 1.84, 1.85, 1.86, 1.87,
1.88, 1.89, 1.9 , 1.91, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98,
1.99]), 0.01)
endpoint를 False로 조정하면 끝점을 포함하지 않게 됩니다. 긜고 retstep을 True로 설정하면 숫자 사이의 간격이 몇인지도 같이 출력해 줍니다.
파이썬 linspace 간격에 따라 그래프 그리기
간격이 촘촘할 수록 그래프가 더욱 구체적이게 되는 장점은 있지만, 촘촘할 수록 규모가 커진다는 단점이 있습니다.
0~2𝛑 사이의 구간에 대해 y = sinx의 그래프를 np.linspace를 이용해 그려보겠습니다.
1) 간격이 5일때
import matplotlib.pyplot as plt
import numpy
x = np.linspace(0, 2 * np.pi, 5)
y = np.sin(x)
plt.plot(x, y, color='red')
plt.show()
2) 간격이 10일때
x = np.linspace(0, 2 * np.pi, 10)
y = np.sin(x)
plt.plot(x, y, color='red')
plt.show()
3) 간격이 20일때
x = np.linspace(0, 2 * np.pi, 20)
y = np.sin(x)
plt.plot(x, y, color='red')
plt.show()
✦ 위 세 사진처럼 구간 내 숫자 개수가 많아질 수록 그래프가 유연해 지는 것을 확인할 수 있습니다.
728x90
'[머신러닝] > [Numpy, Pandas]' 카테고리의 다른 글
[Pandas] 판다스 기초1 (0) | 2023.06.20 |
---|---|
[Numpy] numpy.meshgrid함수 (0) | 2023.06.16 |
[Numpy] np.arange 사용법과 range와의 차이 (0) | 2023.06.16 |
[Pandas] 판다스 설치 (0) | 2023.06.15 |
[Numpy] list와 tuple 자료형의 차이 (0) | 2023.06.14 |