hgk0404
hgk0404.tistory
hgk0404

공지사항

전체 방문자
오늘
어제
  • 전체 카테고리 N
    • [컴퓨터비전]
    • [Computer Science]
      • [컴퓨터네트워크]
      • [알고리즘]
      • [자료구조 in C]
      • [C & C++]
      • [이산수학]
      • [Math]
    • [머신러닝]
      • [Numpy, Pandas]
    • [Cloud]
      • [AWS]
      • [NCP]
      • [Kubernetes]
      • [Terraform]
    • [Dev] N
      • [가상환경] N
      • [Linux]
      • [Docker]
    • [Python]
    • [Coding Test]
      • [백준]
      • [프로그래머스]
      • [SQL]
    • [WEB]
    • [자격증, 일상]
    • [엑셀]
    • [금융]

인기 글

최근 글

최근 댓글

250x250
hELLO · Designed By 정상우.
hgk0404

hgk0404.tistory

[Numpy] linspace함수 (구간 내에 숫자 채우기)
[머신러닝]/[Numpy, Pandas]

[Numpy] linspace함수 (구간 내에 숫자 채우기)

2023. 6. 16. 15:41
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
'[머신러닝]/[Numpy, Pandas]' 카테고리의 다른 글
  • [Pandas] 판다스 기초1
  • [Numpy] numpy.meshgrid함수
  • [Numpy] np.arange 사용법과 range와의 차이
  • [Pandas] 판다스 설치
hgk0404
hgk0404
공부기록

티스토리툴바