(7주차) 4월18일
numpy (메소드 도움말확인, hstack, vstack, append, ravel, flatten, 기타통계함수들, dtype, 브로드캐스팅), matploblib (plt.pyplot, plt.hist)
-
(1/5) 메소드 도움말확인, hstack, vstack, append, ravel, flatten, 기타통계함수들, dtype, 브로드캐스팅
-
(2/5) 브로드캐스팅
-
(3/5) matplotlib
-
(4/5) 시험유의사항
-
(5/5) 예상문제 및 학점 안내사항
import numpy as np
-
파이썬에서 함수를 적용하는 2가지 방식
- np.sum(a)
- a.sum()
a=np.array([1,2,3,4,5])
a
a.sum()
np.sum(a)
-
넘파이에서 a.sum()
에 대한 도움말은 보통 np.sum()
에 자세히 나와있음. $\to$ np.sum()
의 도움말을 확인하고 np.sum(a)
와 a.sum()
이 동일함을 이용하여 a.sum()
의 사용법을 미루어 유추해야함.
a.sum?
np.sum?
-
hstack, vstack 를 쓰는 사람도 있다.
a=np.arange(6)
b=-a
np.vstack([a,b])
np.stack([a,b],axis=0)
np.hstack([a,b])
np.concatenate([a,b],axis=0)
-
기능1: reshape(-1) + concat
a=np.arange(30).reshape(5,6)
b= -np.arange(8).reshape(2,2,2)
a.shape, b.shape
np.append(a,b)
np.concatenate([a.reshape(-1),b.reshape(-1)])
-
기능2: concat
a=np.arange(2*3*4).reshape(2,3,4)
b=-a
a.shape,b.shape, np.append(a,b,axis=0).shape
a.shape,b.shape, np.append(a,b,axis=1).shape
a.shape,b.shape, np.append(a,b,axis=2).shape
-
concat과의 차이?
a=np.arange(2*3*4).reshape(2,3,4)
b=-a
c=2*a
np.append(a,b,c,axis=0)
np.concatenate([a,b,c],axis=0)
a=np.arange(2*3*4).reshape(2,3,4)
a
a.reshape(-1)
a.ravel()
a.flatten()
-
평균, 중앙값, 표준편차, 분산
a = np.random.normal(loc=0,scale=2,size=(100,))
a
np.mean(a)
np.median(a)
np.std(a)
np.var(a)
-
corr matrix, cov matrix
np.random.seed(43052)
x= np.random.randn(10000)
y= np.random.randn(10000)*2
z= np.random.randn(10000)*0.5
np.corrcoef([x,y,z]).round(2)
np.cov([x,y,z]).round(2)
-
np.array는 항상 dtype이 있다.
a = np.array([1,2,3])
a
a.dtype
a = np.array([1.0,2.0,3.0])
a
a.dtype
-
같은 int라도 int16,int32,int64으로 나누어진다.
a = np.array([1,2,3],dtype=np.int32)
a
a.dtype
-
float도 float16, float32, float64가 있다.
a = np.array([1,2,3],dtype=np.float32)
a
-
데이터타입은 아래와 같은 방법으로 변환시킬 수 있다.
a = np.array([1,2,3],dtype=np.int32)
a
a=a.astype(dtype=np.int64)
a
a.dtype
-
문자열의 경우
a = np.array(['a','b','c'])
a
a = np.array(['ab','b','c'])
a
a = np.array(['abasdf','b','c'])
a
-
문자열+숫자혼합 => 문자열로 통일
a= np.array(['a',1])
a
a= np.array(['a',1.0])
a
-
숫자를 문자열로 전환
a= np.array([1,2,3])
a
a.astype(np.str_)
(예비학습)
import time
t1=time.time()
t2=time.time()
t2-t1
예비학습끝
(예제) x=[0,1,2,3,4] 인 벡터가 있다고 하자. (i,j)의 원소가 (x[i]-x[j])**2
을 의미하는 $5\times 5$ 매트릭스를 구하라.
(풀이1)
x=np.array(range(5))
x
dist = np.zeros([5,5])
dist
for i in range(5):
for j in range(5):
dist[i,j]=(x[i]-x[j])**2
dist
(풀이2)
x1=x.reshape(5,1).astype(dtype=np.float64)
x2=x.reshape(1,5).astype(dtype=np.float64)
x1
x2
x1-x2
- (i,j)th element = x[i]-x[j]
(x1-x2)**2
y=np.array(range(10000))
dist = np.zeros([10000,10000])
dist
t1=time.time()
for i in range(10000):
for j in range(10000):
dist[i,j]=(y[i]-y[j])**2
t2=time.time()
t2-t1
y1=y.reshape(10000,1).astype(np.float64)
y2=y.reshape(1,10000).astype(np.float64)
t1=time.time()
dist2=(y1-y2)**2
t2=time.time()
t2-t1
(dist-dist2).sum()
import matplotlib.pyplot as plt
-
기본그림
plt.plot([1,2,3],[3,4,5],'.')
plt.plot(np.array([1,2,3]),np.array([3,4,5]),'.')
-
예제들
t=np.linspace(-6,6,100)
x=np.sin(t)
y=np.cos(t)
plt.plot(t,x)
plt.plot(t,y)
plt.plot(t,x)
plt.plot(t,y)
plt.plot(t,x)
plt.plot(t,y,'.')
plt.plot(t,x)
plt.plot(t,y,'--')
X = np.random.randn(1000)
Y = np.random.rand(1000)
plt.hist(X)
plt.hist(Y)