넘파이 활용하기

2024. 11. 4. 21:36python study/sw와 ai 데이터 분석

수열 생성하기

  • np.arange(시작값, 종료값, 증감값)
  • np.linspace(시작값, 종료값, 데이터 개수)

arange

  • 리스트와 다르게 실수값도 지원
  • arange형태로 생성
np.arange(1.5,10.5,2.1)
array([1.5, 3.6, 5.7, 7.8, 9.9])

linspace

  • 만약 시작값이 1이고 종료값이 10이면 이 구간을 5개로 나누어 준다.
  • 실수값도 지원
  • arange형태로 생
np.linspace(1,10,5)
array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ])

arange를 이용하여 sin, cos 함수 그리기

  • np.array를 활용하여서 0부터 3.14*2의 구간을 0.01 간격으로 저장해 준다.(x축 값)
  • y1에는 넘파이에서 지원하는 sin을 활용하여서 sin 값을 저장
  • y2에는 넘파이에서 지원하는 cos을 활용하여서 cos 값을 저장
  • 나머지는 plot을 활용하여서 그래프를 생성해 주기(그래프 부분에서 자세히 배움)
  • 이때 한국어를 그래프에 띄우기 위해서는 아래에 있는 한국어 지원 라이브러리를 설치해줘야 한다.
!pip install koreanize-matplotlib
import koreanize_matplotlib
  • 다음은 sin, cos그래프를 그린 것이다.
import numpy as np
import matplotlib.pyplot as plt

x=np.arange(0,3.14*2,0.01) #x축의 범위
y1=np.sin(x) #사인값 저장
y2=np.cos(x) #코사인값 저장

plt.plot(x,y1,label='사인')
plt.plot(x,y2,label='코사인')
plt.title('사인 코사인 그래프')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.legend(loc='best')
plt.show()

linspace활용하여서 sin, cos 함수 그리기

  • arange와 다른 점은 x의 범위를 linspace를 활용하여서 지정한다는 것이다.
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(-np.pi,np.pi,1000) #x축의 범위(-파이 부터 파이까지 1000개의 칸으로 나눔)
y1=np.sin(x) #사인값 저장
y2=np.cos(x) #코사인값 저장

plt.plot(x,y1,label='사인')
plt.plot(x,y2,label='코사인')
plt.title('사인 코사인 그래프')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.legend(loc='best')
plt.show()

random 함수

  • np.random.rand(a, b): 0.0~1.0까지의 실수를 생성해 주고 a는 가로, b는 세로 인덱스?로 생각하면 이해하기 편하다. 보통은 2차원 array생성한다.
import numpy as np

x=np.random.rand(3,5)
x
array([[0.3652308 , 0.76593416, 0.37957457, 0.97780834, 0.31483611],
       [0.42481493, 0.71036853, 0.71498525, 0.57968489, 0.86283902],
       [0.9423345 , 0.82414919, 0.34353579, 0.77854284, 0.67522922]])
  • x [a, b]: 행이 a, 열이 b인 값을 출력한다.
import numpy as np

x=np.random.rand(3,5)
print(x)
print(x[1,2])
[[0.3743976  0.33638399 0.03180194 0.05081226 0.3316141 ]
 [0.18316801 0.5135427  0.07797286 0.67802783 0.86017388]
 [0.12654207 0.26119691 0.58713929 0.31643593 0.59943689]]
0.07797285567222245
  • np.random.randint(a, b, size=(x, y)): a부터 b까지 행의 개수를 x, 세로의 개수를 y로 해서 2차원 array를 생성한다.
import random 
import numpy as np

x=np.random.randint(1,10,size=(3,5))
x
array([[5, 1, 4, 1, 4],
       [3, 9, 4, 8, 8],
       [6, 4, 7, 2, 2]])
  • np.random.normal(a, b, c): a는 모평균, b는 표준 편차, c는 생성할 개수를 의미한다. 즉 정규분포를 가지는 난수를 생성해 준다.
import random 
import numpy as np

x=np.random.normal(55,5,10)
x
array([57.09909877, 51.83552741, 55.20006908, 59.02555085, 57.20582001,
       60.34300436, 52.32672183, 61.82645625, 55.37489259, 60.38922536])

기본 통계 함수

  • np.sum(): 합계
  • np.mean(): 평균
  • np.var(): 분산
  • np.std(): 편차
import numpy as np

a=np.array([1,2,3,4,5])
print(np.sum(a))
print(np.mean(a))
print(np.var(a))
print(np.std(a))
15
3.0
2.0
1.4142135623730951

'python study > sw와 ai 데이터 분석' 카테고리의 다른 글

WorldCloud 시각화분석  (1) 2024.11.07
데이터 시각화2  (0) 2024.11.06
numpy이해와 자료구조  (0) 2024.11.04
데이터 시각화란?  (0) 2024.11.03
데이터 재설정  (0) 2024.09.30