1/3
1+2+3
a=1
b=7
a/b
# [shift + enter]:셀 실행 후 다음셀로
# [ctrl + enter]:셀 실행 후 현재 셀로
# 셀 바깥 쪽 클릭 시 파란박스 -> 명령모드
# 셀 안 쪽 클릿 시 초록박스 -> 편집모드
# 명령모드로 바꾼 뒤 [H]키를 누르면 각 모드에 대한 소개와 단축키 목록 표시
# 명령모드에서 [L]키를 누르면 셀에 행 번호 추가
# 명령모드에서 [A]나 [B]키를 누르면 선택 셀의 위 아래에 새로운 셀 추가
# 명령모드에서 [D, D]키를 누르면 선택 셀 삭제
a=1
b=2
a/b
a/0
# 행 번호 추가 시 디버깅 편리
우측 상단의 드롭다운 메뉴에서 Code -> Markdown 선택 시 메모작성모드로 변경
입력 후 [ctrl + enter]시 테두리가 사라지고 일반적인 문장으로 표시됨
import keras
keras.__version__
1+2
(1+2*3-4)/5
2**8
x=1
y=1/3
x+y
Data_1=1/5
Data_2=3/5
Data_1+Data_2
type(100)
type(100.1)
x=100
type(x)
x=100.1
type(x)
x='learning'
type(x)
x=1/3
x
y=2/3
y
x=1/3
print(x)
y=2/3
print(y)
print('x= ' + str(x))
print('weight = {0} kg'.format(x))
x=1/3
y=1/7
z=1/4
print('weight: {0:.2f} kg, y={1:.2f} kg, z={2:.2f} kg'.format(x,y,z))
x=[1,2,3,4,5]
print(x)
x[0]
x[2]
print(type(x))
print(type(x[0]))
s=['SUN',1,'MON',2]
print(type(s[0]))
print(type(s[1]))
a=[[1,2,3],[4,5,6]]
print(a[0][1])
x=[1,1,2,3,5]
x[3]=100
print(x)
x=[1,1,2,3,5]
len(x)
y=range(5,10)
# 연속된 정수 데이터 (5, 6, 7, 8, 9)
# 요소 수정 불가
print(y[0],y[1],y[2],y[3],y[4])
print(y)
z=list(range(5,10))
# 수열
print(z)
list(range(10))
a=(1,2,3)
# 튜플
# 요소 수정 불가
print(a)
a[1]
type(a)
a=(1)
# 튜플 x
type(a)
a=(1,)
# 길이가 1인 튜플
type(a)
x=11
if x>10:
print('x is ')
print(' larger than 10.')
else:
print('x is smaller than 11')
x>10
type(x>10)
x=15
if 10<=x and x<=20:
print('x is between 10 and 20.')
for i in [1,2,3]:
print(i)
num=[2,4,6,8,10]
for i in range(len(num)):
num[i]=num[i]*2
print(num)
num=[2,4,6,8,10]
for i,n in enumerate(num):
num[i]=n*2
# enumerate : i(배열의 인덱스), n(배열[i]의 값)
print(num)
[1,2]+[3,4]
import numpy as np
x=np.array([1,2,3])
# 벡터(1차원 배열) 정의
x
print(x)
y=np.array([4,5,6])
print(x+y)
#벡터 연산
type(x)
x[0]
x[0]=100
print(x)
print(np.arange(10))
# list(range(10))를 벡터로
print(np.arange(5,10))
a=np.array([1,1])
b=a
# b에 a가 저장된 곳의 참조 주소가 전달
print('a=' + str(a))
print('b=' + str(b))
b[0]=100
# 변경사항 a에도 반영
print('b=' + str(b))
print('a=' + str(a))
a=np.array([1,1])
b=a.copy()
# b는 a와 관계 없이 독립된 변수로 취급
print('a=' + str(a))
print('b=' + str(b))
b[0]=100
# 변경사항 a에 반영x
print('b=' + str(b))
print('a=' + str(a))
x=np.array([[1,2,3],[4,5,6]])
# 2차원 배열로 행렬 정의
print(x)
x=np.array([[1,2,3],[4,5,6]])
x.shape
# 행렬 크기
w,h=x.shape
print(w)
print(h)
x=np.array([[1,2,3],[4,5,6]])
x[1,2]
x=np.array([[1,2,3],[4,5,6]])
x[1,2]=100
print(x)
print(np.zeros(10))
# 모든 요소가 0인 길이가 10인 벡터
print(np.zeros((2,10)))
# 모든 요소가 0인 2x10인 행렬
print(np.ones((2,10)))
# 모든 요소가 1인 2x10인 행렬
np.random.rand(2,3)
# 2x3의 난수 행렬
a=np.arange(10)
print(a)
a.reshape(2,5)
# 행렬 사이즈 변경
x=np.array([[4,4,4],[8,8,8]])
y=np.array([[1,1,1],[2,2,2]])
print(x+y)
x=np.array([[4,4,4],[8,8,8]])
print(10*x)
# 행렬의 스칼라 곱
x=np.array([[4,4,4],[8,8,8]])
print(np.exp(x))
# exp(x) : 지수함수
v=np.array([[1,2,3],[4,5,6]])
w=np.array([[1,1],[2,2],[3,3]])
print(v.dot(w))
# 행렬 곱의 계산(내적)
x=np.arange(10)
print(x)
print(x[:5])
print(x[5:])
print(x[3:8])
# 3, 4, 5, 6, 7
print(x[3:8:2])
print(x[::-1])
# 배열 순서 거꾸로
y=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(y)
print(y[:2,1:2])
# [행 슬라이싱, 열 슬라이싱]
x=np.array([1,1,2,3,5,8,13])
x>3
x[x>3]
x[x>3]=999
print(x)
help(np.random.randint)
# help(함수명) : 함수의 설명 확인
def my_func1():
print('Hi!')
my_func1()
def my_func2(a,b):
c=a+b
return c
my_func2(1,2)
def my_func3(D):
m=np.mean(D)
# D의 평균
s=np.std(D)
#D의 표준편차
return m,s
# D : 인수
# m,s : 반환값
data=np.random.randn(100)
data_mean,data_std=my_func3(data)
print('mean:{0:3.2f}, std:{1:3.2f}'.format(data_mean, data_std))
output=my_func3(data)
# 반환 값이 여러 개라도 하나의 변수로 받을 수 있음
# 이 경우 반환 값은 튜플형
print(output)
print(type(output))
print('mean:{0:3.2f}, std:{1:3.2f}'.format(output[0], output[1]))
data=np.random.randn(5)
print(data)
np.save('datafile.npy',data)
# ndarray형을 파일에 저장
data=[]
print(data)
data=np.load('datafile.npy')
# ndarray형을 파일에서 로드
print(data)
data1=np.array([1,2,3])
data2=np.array([10,20,30])
np.savez('datafile2.npz', data1=data1, data2=data2)
# 여러 ndarray형을 파일에 저장
data1=[]
data2=[]
outfile=np.load('datafile2.npz')
# 여러 ndarray형을 파일에서 로드
print(outfile.files)
# 저장된 변수 목록 확인
data1=outfile['data1']
data2=outfile['data2']
print(data1)
print(data2)
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# 주피터 노트북에서 그래프 표시
np.random.seed(1)
# 난수 고정
x=np.arange(10)
y=np.random.rand(10)
# <그래프 표시>
plt.plot(x,y) # 꺾은선 그래프를 등록
plt.show() # 그래프 그리기
%reset
# 지금까지의 이력을 모두 메모리에서 삭제
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def f(x):
return (x-2)*x*(x+2)
print(f(1))
print(f(np.array([1,2,3])))
# ndarray 배열을 함수의 인수로 받을 수 있음
x=np.arange(-3,3.5,0.5)
# 그래프를 그리는 범위를 설정
print(x)
plt.plot(x, f(x))
plt.show()
def f2(x,w):
return (x-w)*x*(x+2)
x=np.linspace(-3,3,100)
# x 정의(-3 ~ 3 을 100 분할)
# <차트 묘사>
plt.plot(x,f2(x,2),color='black',label='$w=2$') # 검정색
plt.plot(x,f2(x,1),color='cornflowerblue',
label='$w=1$') # 파란색
plt.legend(loc="upper left") # 범례 표시 (upper/lower right/left)
plt.ylim(-15,15) # y축 범위
plt.title('$f_2(x)$') # 제목
plt.xlabel('$x$') # x 라벨
plt.ylabel('$y$') # y 라벨
plt.grid(True) # 그리드
plt.show()
import matplotlib
matplotlib.colors.cnames
# 사용할 수 있는 색상 목록 확인
plt.figure(figsize=(10,3)) # 전체 영역의 크기 지정
plt.subplots_adjust(wspace=0.5,hspace=0.5) # 그래프의 간격 지정
# 여러 그래프를 나란히 표시
for i in range(6):
plt.subplot(2,3,i+1) #그래프 묘사 위치 지정
plt.ylim(-20,20)
plt.title(i+1)
plt.plot(x,f2(x,i),'k')
plt.grid(True)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
def f3(x0,x1):
r=2*x0**2+x1**2
ans=r*np.exp(-r)
return ans
# 이변수 함수
xn=9
x0=np.linspace(-2,2,xn)
x1=np.linspace(-2,2,xn)
y=np.zeros((len(x0),len(x1)))
for i0 in range(xn):
for i1 in range(xn):
y[i1,i0]=f3(x0[i0],x1[i1])
print(x0)
print(np.round(y,1))
# 소수점 1자리로 반올림
plt.figure(figsize=(3.5,3))
plt.gray() # 색상 회색 음영으로 표현
plt.pcolor(y)
# 행렬을 색상으로 표현
plt.colorbar() # 행렬 옆에 컬러 바를 나타냄
plt.show()
from mpl_toolkits.mplot3d import Axes3D
# 3차원 표현
xx0,xx1=np.meshgrid(x0,x1)
# x0,x1 -> xx0,xx1 2차원 배열이 됨 (9x9)
plt.figure(figsize=(5,3.5))
ax=plt.subplot(1,1,1,projection='3d') # 3차원 차트
ax.plot_surface(xx0,xx1,y,rstride=1,cstride=1,alpha=0.3,
color='blue',edgecolor='black')
# rstride, cstride : 가로세로 선 긋는 개수 지정
# alpha : 면의 투명도 지정
ax.set_zticks((0,0.2)) # z축 눈금 제한
ax.view_init(75,-95) # 3차원 그래프의 방향 조절 (상하회전각도, 좌우회전각도)
plt.show()
print(x0)
print(x1)
print(xx0)
print(xx1)
xn=50
x0=np.linspace(-2,2,xn)
x1=np.linspace(-2,2,xn)
y=np.zeros((len(x0),len(x1)))
for i0 in range(xn):
for i1 in range(xn):
y[i1,i0]=f3(x0[i0],x1[i1])
xx0,xx1=np.meshgrid(x0,x1) # (50x50)
plt.figure(1,figsize=(4,4))
cont=plt.contour(xx0,xx1,y,5,colors='black') # 등고선 표시 높이 5단계로 지시
# 등고선으로 표시
cont.clabel(fmt='%3.2f',fontsize=8) # 각 등고선에 숫자 삽입 (fmt : 숫자 형식)
plt.xlabel('$x_0$',fontsize=14)
plt.ylabel('$x_1$',fontsize=14)
plt.show()