code summary
$\LaTeX$
줄간격
줄간격패키지: \usepackage{setspace}
\singlespacing
\onehalfspacing
\doublespacing
\setlength{\textheight}{600pt}
enumerate
\usepackage{enumitem}
필요함
- $\text{(a), (b), (c), …}$ : \begin{enumerate}[label=(\alph*)]
- $\text{(A), (B), (C), …}$ : \begin{enumerate}[label=(\Alph*)]
- $\text{A., B., C., …}$ : \begin{enumerate}[label=\Alph*.]
- $\text{(I), (II), (III), …}$ : \begin{enumerate}[label=(\Roman*)]
- $\text{(i), (ii), (iii), …}$ : \begin{enumerate}[label=(\roman*)]
- $\text{(1), (2), (3), …}$ : \begin{enumerate}[label=(\arabic*)]
itemize
문자 크기
$\Huge AB$ \Huge AB
$\huge AB$ \huge AB
$\LARGE AB$ \LARGE AB
$\Large AB$ \Large AB
$\large AB$ \large AB
$\normalsize AB$ \normalsize AB
$\small AB$ \small AB
$\footnotesize AB$ \footnotesize AB
$\scriptsize AB$ \scriptsize AB
$\tiny AB$ \tiny AB
VS Code
다중검색으로 날짜 바꾸기 찾기: (2013)(-04)(.*)(#early) 바꾸기: 2023$2$3
폴더 안열리게 하는 설정 Explorer: Auto Reveal → False
탭창 멀티라인 Wrap Tabs
MarkdownAllinOne
마크다운 표 자동 formatting하는 기능 Shift + Alt + F
- 파일 열 때 폴더 안펼쳐지게하기: Explorer: Auto Reveal
자동 줄바꿈 옵션
코드 자동 줄바꿈: Editor: Word Wrap
- Ctrl + Shift + P $\to$ word wrap 검색 후 활성화
- 토글키는 Alt + z
탭 표시줄 자동 줄바꿈: Editor: Wrap Tabs
스니펫
- 경로: C:\Users\username\AppData\Roaming\Code\User\snippets\snippets.code-snippets
단축키 설정: keybindings.json
경로: C:/Users/username/AppData/Roaming/Code/User/keybindings.json
마크다운 환경에서 윗첨자 자동 괄호:
{ "key": "shift+6", "command": "editor.action.insertSnippet", "when": "editorTextFocus && editorLangId == 'markdown'", "args": { "snippet": "^{$0\\}" } }
- 텍 파일일 때 적용시키려면
editorLangId == 'latex'
- 텍 파일일 때 적용시키려면
HTML
그림
- 이미지 삽입하고 가운데정렬
<image src="___.png" width="400" style="display: block; margin: auto;"/>
matplotlib
이미지 사이즈
설정한 사이즈로 피규어 만드는 법:
plt.figure(figsize=(w,h))
기본 사이즈:
plt.figure(figsize=(6.4,4.8))
기본 plot 사이즈 조절:
import matplotlib plt.rcParams['figure.figsize'] = [width, height]
tmux
tmux attach -t 0
: 0번 세션에 연결- Ctrl + b + 방향키: 해당 방향의 세션으로 전환
- Ctrl + b + 숫자: 해당 번호의 세션으로 전환
- Ctrl + b + d : (세션 살려둔 채) 일반쉘으로 나가기.
- Ctrl + c + Ctrl + c : emacs 종료
Python
실행 파일의 경로 os.getcwd()
main.__file__
: 파일 이름과 확장자를 포함한 경로는 얻는다.os.path.dirname(os.path.realpath(__file__))
: 파일이 포함된 폴더의 경로를 얻는다. 터미널에서 파이썬 파일 실행시킬 때도 의도한 대로 기능하게 하려면 이걸 써야함.os.getcwd()
: 현재 작업 경로를 얻는다. 탐색기에서*.py
파일을 실행할 땐 의도대로 작동하지만, 터미널에서 실행시키면 터미널 경로를 얻음.
>>> import os
>>> import __main__ as main
>>> x = main.__file__
>>> print(x, "\n")
C:/Users/admin/Desktop/Python/test.py
>>> y = os.path.dirname(os.path.realpath(__file__))
>>> print(y, "\n")
C:/Users/admin/Desktop/Python
>>> z = os.getcwd()
>>> print(z)
C:/Users/admin/Desktop/Python
경로가 존재하는지 확인 os.path.exists(directory)
os.path.exists(directory)
: 경로가 존재하는지에 따라 True 혹은 Flase를 반환한다.
폴더 생성 os.makedirs(directory)
os.makedirs(directory)
: 입력한 경로가 없으면 폴더를 만드는 코드.def create_directory(directory): try: if not os.path.exists(directory): os.makedirs(directory) except OSError: print("Error: Failed to create the directory.")
폴더 삭제
하위 폴더 탐색하면서 빈 폴더면 삭제하는 코드.
import os
directory = os.path.dirname(os.path.realpath(__file__))
for (path, dir, files) in os.walk(directory):
try:
os.removedirs(str(path))
except:
print("디렉토리가 비어있지 않습니다.")
실행 파일의 하위 경로의 특정 파일 모두 찾기
실행 파일이 위치한 폴더를 포함한 하위 경로의 파이썬 파일*.py
을 모두 찾는 코드이다.
실행 파일이 위치한 폴더도 탐색 범위에 포함되므로 실행 파일 자체도 file_list
에 포함된다.
directory = os.getcwd()
file_list = []
for (path, dir, files) in os.walk(directory):
for filename in files:
ext = os.path.splitext(filename)[-1]
if ext == '.py':
file_list.append("%s\\%s" % (path, filename))
실행 변수 sys.argv
python 이후의 부분foo을 sys.argv = foo.split()
으로 받아오는 것.
# 파일 실행
import os
os.system("python " + "file_directory/foo.py " + argv1 + " " + argv2)
## foo.py 내부 코드
import sys
# sys.argv[0]는 "file_directory/foo.py "임
variable1 = sys.argv[1]
variable2 = sys.argv[2]
파일 읽고 쓰기
읽기와 쓰기를 따로 해아한다. 뒤에 “t"를 붙이면 text, “b"를 붙이면 binary 모드
- “rt"는 read text 모드, 읽기 전용, 파일 없으면 에러
- “w"는 write 모드, 파일이 있든 없든 새로 만든다.
- “a"는 append 모드, 파일이 없으면 새로 만들고, 있으면 기존 파일의 마지막에 내용 추가.
- “x"는 create 모드, 이미 파일이 있으면 에러.
# 텍스트 파일 열고 내용 가져오기, 그리고 닫기
foo_read = open(file_directory + "foo.txt", "rt", encoding="utf-8")
lines = foo_read.readlines()
foo_read.close()
readlines()
는 txt 파일의 각 줄을 리스트의 성분(문자열)으로 받아온다. 줄바꿈이 있으면 마지막에 '\n'
도 포함됨. .strip()
으로 마지막의 '\n'
를 지울 수 있다.
foo_write = open(file_directory + "foo.txt", "wt", encoding="utf-8")
foo_write.write("bar\n") # 한 줄 쓰기
lines = ["bar1\n", "bar2\n", "bar3\n"]
foo_write.lines(lines) # 여러 줄 쓰기
foo_write.close()
문자열
strip()
: 앞과 뒤에서 문자열 지움. 변수 없으면 (줄바꿈 등을 포함한) 공백을 지움. 따라서 문자열의 시작과 끝의 공백을 지울 때 유용함.sort()
: 알파벳 순서로 문자열 정렬. 역순정렬은reverse=True
replace()
: 문자열 대체translate()
: 문자 대체replace와 translate의 차이1
replace(‘바꿀문자열’, ‘새문자열’) 은 문자열 안의 문자열을 다른 문자열로 바꿉니다(문자열 자체는 변경하지 않으며 바뀐 결과를 반환합니다). 다음은 문자열 ‘Hello, world!‘에서 ‘world’를 ‘Python’으로 바꾼 뒤 결과를 반환합니다. replace는 문자열을 바꿨는데 문자를 바꾸는 방법도 있겠죠? translate는 문자열 안의 문자를 다른 문자로 바꿉니다. 먼저 str.maketrans(‘바꿀문자’, ‘새문자’) 로 변환 테이블을 만듭니다. 그다음에 translate(테이블) 을 사용하면 문자를 바꾼 뒤 결과를 반환합니다. 다음은 문자열 'apple'에서 a를 1, e를 2, i를 3, o를 4, u를 5로 바꿉니다.
>>> table = str.maketrans('aeiou', '12345') >>> 'apple'.translate(table) '1ppl2'
split()
: 입력변수를 기준으로 문자열 쪼개서 리스트로 반환>>> x.split(',') ['1', '3', '4']
정리 잘된 사이트
리스트
.sorted()
: 알파벳 순서로 문자열 정렬. 역순 정렬은reverse=True
리스트 저장하고 불러오기
import pickle
list = [1, 2, 3, 4]
# 리스트 저장
with open("list.pkl", "wb") as f:
pickle.dump(list, f)
# 리스트 불러오기
with open("list.pkl", "rb") as f:
list = pickle.load(f)
Julia
PyTorch and TensorFlow
GPU
GPU확인
- P: torch.cuda.is_available()
배열
상수
- P: torch.tensor([1,2,3])
- TF: tf.constant([1,2,3])
파라매터
- P: torch.tensor([1,2,3], requires_grad=True)
- TF: tf.variable([1,2,3])
모델
클래스
- P: class model(nn.Module)
- TF: class model(tf.keras.Model)
TF: model.complie()
TF: model.fit(data, label, epochs, batch_size, verbose)
verbose
: Integer. 0, 1, or 2. (훈련 결과 출력 방식)- 0 = silent,
- 1 = progress bar,
- 2 = one line per epoch.
TF: model.complie()