본문 바로가기

Study52

javascript canvas로 허접한 꺾은선 그래프 만들기 canvas에서 간단하게 꺾은선 그래프를 그려보았다. See the Pen DrawGraph by Jh Do (@kazakan) on CodePen. 가로 세로 축이 그려져있고 주어진 값에 점이 찍혀 있으며 그 점을 잇는 선들이 있는 전형적인 꺾은선 그래프이다. 이 그래프는 점 근처에 마우스를 가져다 대면 그 점이 가리키는 값을 보여준다. 그 외에는 별 기능은 없다. 코드 살펴보기 코드를 차근차근 살펴보자. // data data = [5, 3, 26, 7, 6, 3, 45, 7, 54, 3, 10, 4, 3, 20,54]; const cvs = document.getElementById("cvs"); const ctx = cvs.getContext("2d"); cvs.height = window.inn.. 2021. 4. 15.
Python 문자열(string) 그냥 한번 대충 보기 Python string 그냥 한번 대충 보기¶ 문자열에 관하여 간단하게 보는 글 문자열 생성¶ a = 'abcdefgh' b = "12345" c = """ㄱㄴㄷ ㄻㅄ ㅇㅈㅊㅋ""" print(a) print(b) print(c) abcdefgh 12345 ㄱㄴㄷ ㄻㅄ ㅇㅈㅊㅋ 문자열 요소 접근¶배열 접근하듯 하면 된다. a[0] 'a' a[4] 'e' a[-1] 'h' a[1:4] 'bcd' a[-3:] 'fgh' sentence = "hello world" for c in sentence: print(c) h e l l o w o r l d 문자열의 길이는 ?¶ len(sentence) 11 더하기 기호로 문자열 .. 2021. 4. 14.
Python에서 Glob으로 파일 혹은 폴더의 경로 불러오기 Python에서 Glob으로 파일과 폴더경로 불러오기¶ import glob 폴더 구조는 아래와 같다. data폴더와 파이썬 노트북이 하나 존재한다. data폴더엔 abc.tiff파일하나와 train,test 두개의 폴더가 있다. train,test폴더엔 tiff, json파일이 두개씩 존재한다. !ls ./ -R ./: data glob.ipynb ./data: abc.tiff testtrain ./data/test: ccc.json ccc.tiff ddd.json ddd.tiff ./data/train: aaa.json aaa.tiff bbb.json bbb.tiff 현재 폴더에 있는 폴더와 파일의 경로들을 받는다. glob.glob('./*') ['./glob.ipynb&#39.. 2021. 3. 26.
Pytorch Tensor(텐서) 만들기 Pytorch의 Tensor(텐서) 조작하기 1¶ import torch import numpy as np Tensor(텐서) 를 만드는 다양한 방법¶ empty¶주어진 크기의 아무값으로도 초기화되지 않은 텐서를 만든다. 텐서 성분의 값들은 쓰레기값들이다. torch.empty(4) tensor([ 1.6751e-37, -1.9427e-13, 1.6751e-37, -1.9427e-13]) torch.empty((4,5)) tensor([[0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00], [0.0000e+00, 0.0000e+00, 0.0000e+00, 1.4013e-45, 0.0000e+00], [0.0000e+00, 0.0000e+00, 0.0.. 2021. 3. 23.
Kaggle에서 Pytorch로 간단한 Mnist 숫자 분류기 만들기 Pytorch로 간단한 Mnist 숫자 분류기 만들기¶캐글에서 Mnist 숫자를 분류하는 연습을 여기서 할 수 있다. Kaggle에서 제공하는 데이터와 환경으로 간단하게 Mnist 숫자를 분류하는 연습을 해보자. import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import Dataset,DataLoader 사용할 경로와 epoch, 배치사이즈, learning rate를 한곳에서 쉽게 조정하여 사용할 수 있도록 하였다. class PATH: TRAIN = '/ka.. 2021. 3. 16.
Pytorch로 선형 회귀(Linear Regression) 구현하기 Pytorch로 선형회귀 구현하기¶ import numpy as np import matplotlib.pyplot as plt import torch import torch.nn as nn from torch.optim import SGD 데이터 생성¶y = 2*x + 10에서 약간의 오차를 준 데이터를 사용하였다. # y = x*2 + 10 data_x = np.random.randint(1,20,20) data_y = np.array([1*np.random.randn() + x*2 + 10 for x in data_x]) data_x = torch.FloatTensor(data_x).unsqueeze(dim=1) data_y = torch.FloatTensor(data_y).unsqueeze(dim=.. 2021. 3. 15.
C/C++서 양수 정수 나눗셈 결과의 올림 구하기 math.h의 ceil을 쓰면 간단하게 구할 수 있지만, 다르게도 한번 해보자. c = (a+b-1)/b; 확인해보자. #include int main(void){ int a[7] = {5,6,7,11,100,65,99}; int b[7] = {2,2,5,5,5,13,30}; for(int i=0;i 2021. 3. 1.
Scanf의 형식지정자에 대하여 scanf는 c언어를 배울 때 처음 배우는 입력 함수이다. 정수 하나를 입력받는다고 하자. int i; scanf("%d",&i); 위와 같을 꼴로 int 정수 하나를 입력받을 것이다. scanf에서 우리가 첫 파라메터로 입력한 값을 형식지정자라고 한다. 이 값을 잘 조정함으로 우리는 다양한 입력을 여러가지 방법으로 받을 수 있다. 예를들어 123456789 라는 입력이 있을 때 이 입력을 9자리의 정수가 아닌 3자리의 정수 3개로 받을 수 있다. #include int main(void){ int a,b,c; scanf("%3d%3d%3d",&a,&b,&c); printf("a:%d, b: %d, c: %d\n",a,b,c); } 이때 출력은 다음과 같다. > a:123, b: 456, c: 789 형.. 2021. 2. 26.
.py를 .ipynb으로, 또 그 반대로 ipynb-py-convert 를 사용하여 파이썬 스크립트를 노트북파일로 변환하고, 노트북 파일도 스크립트로 변환이 가능하다. 설치법 pip install ipynb-py-convert 사용법 - abc.py를 def.ipynb로 바꿀때 ipynb-py-convert abc.py def.ipynb - abc.ipynb를 def.py로 바꿀때 ipynb-py-convert abc.ipynb def.py 위처럼 입력하면 끝이다. 스크립트를 노트북으로 바꿀때 셀구분이 하고싶을것이다. # %% 로 셀구분이 가능하며, ''' 을 사용한 주석으로 마크다운을 적용할 수 있다. https://pypi.org/project/ipynb-py-convert/ 2020. 10. 17.
Python에서 c,c++ 코드 사용하기 python의 ctypes를 이용하면 c혹은 c++에서 작성한 코드를 사용가능하다. a.cpp 에서 작성한 단순 곱셈함수 mul을 python에서 사용해보자. //a.cpp #include extern "C"{ int mul(int a,int b){ return a*b; } } 위 파일을 공유라이브러리로 만들어 주어야한다. g++로 a.cpp를 liba.so로 만들어주자. g++ -shared -fPIC a.cpp -o liba.so liba.so 파일이 생성되었다. a.py에서 liba.so의 mul을 사용해보자. #a.py import ctypes a = ctypes.CDLL("./liba.so") mul = a.mul print(mul(13,43)) a.py를 실행시키면 559가 출력된다. 2020. 10. 4.