일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 텝스
- 수치해석
- 우분투
- Python
- 수식삽입
- Julia
- 딥러닝
- Statics
- JAX
- LaTeX
- MATLAB
- 에러기록
- Linear algebra
- 논문작성
- 생산성
- matplotlib
- Numerical Analysis
- Dear abby
- 인공지능
- ChatGPT
- obsidian
- Zotero
- WOX
- pytorch
- 텝스공부
- 옵시디언
- teps
- 고체역학
- 논문작성법
- IEEE
- Today
- Total
목록프로그래밍 Programming/파이썬 Python (32)
뛰는 놈 위에 나는 공대생
matplotlib에서 animation 클래스를 쓰면 발생하는 오류이다. 이는 ffmpeg라는 코덱을 설치하지 않았기 때문에 mp4를 만들지 못해서 발생한다. 따라서 ffmpeg를 설치하면 된다. 또한 가상환경 상에서도 ffmpeg를 파이썬과 호환되는 라이브러리를 설치할 수도 있다. 1. ffmpeg 설치 윈도우 설치법과 우분투 설치법이 다른데, 나는 우분투에서만 설치했다. 만든 이 사이트 : https://www.gyan.dev/ffmpeg/builds/#release-builds Builds - CODEX FFMPEG @ gyan.dev FFmpeg is a widely-used cross-platform multimedia framework which can process almost all co..
맨날 까먹어서 쓰는 글 다른 사람이 배포해놓은 라이브러리를 다운받아서 사용하면 그 안에 많은 모듈이 있다. 0. 라이브러리 vs 모듈 vs 패키지 내가 사용하기 위해 만든 다양한 함수,변수,클래스 등을 묶어서 .py로 만들면 모듈이라고 하고 이들을 묶어서 __init__.py와 함께 만들어서 폴더에 넣으면 패키지 (init.py이 없으면 패키지로 인식이 안되는 문제가 있다.) 패키지와 모듈들을 묶어서 하나로 만들면 라이브러리라고 한다. numpy나 pandas 같은 것들이 파이썬 패키지이고 그 안에 다양한 모듈들이 있다. 이를 모아서 더 큰 라이브러리를 만들 수 있다. 예를 들면 Matplotlib, PyTorch 등. 이것보다 더 큰 개념을 framework라고 하는데 이는 보통 개발자들이 사용하는 툴..
앞으로는 환경을 좀 써놔야겠다. # Ubuntu 22.04 1. 문제 상황 기본적으로 matplotlib의 label 이나 legend에 수식을 삽입하기 위해 설정을 다음과 같이 해놓는다. plt.rcParams['text.usetex'] = True 이렇게 했을 때 failed to process string with tex because latex could not be found 이 오류를 만나게 되었다. texlive나 MiKTeX와 같은 LaTeX 배포판을 설치하지 않아서 발생하는 문제이다. 2. texlive 설치 textlive를 설치하는 방법은 texlive 공식 사이트 또는 KTUG 사이트에서 확인할 수 있는데 나는 공식 사이트 문서를 선호하는 편이다. 위에서 나온 대로 cd /tmp #..
그래프를 여러개 그리는데 색깔이 설정에서 계속 동일하게 반복된다. (아래 그림 참고) 나의 경우에는 색상을 classic으로 설정해서 클래식 색상의 7가지가 반복되게 되어있다. 이게 마음에 안 들어서 살펴보다가 최신 matplotlib 버전부터는 axes.set_prop_cycle을 이용하면 색상도 편하게 다르게 할 수 있고 마커도 일정 패턴을 반복하도록 할 수 있음을 알게 되었다. 아래는 그 예시 코드로 Spectral cmap에서 내가 원하는 그래프 개수만큼을 간격을 추출해서 그래프를 그리기 전에 미리 cycler를 정의해놓으면 편하게 색상을 지정할 수 있다. import matplotlib.pyplot as plt ax = plt.subplot(111) num_lines = 30 colors = [..
MCMC sampling을 위한 라이브러리 marathon : c++ 라이브러리 c++ 라이브러리는 고려하지 않았으므로 패스 Pyro : Pyro is a universal probabilistic programming language (PPL) written in Python and supported by PyTorch on the backend. Pyro enables flexible and expressive deep probabilistic modeling, unifying the best of modern deep learning and Bayesian modeling. It was designed with these key principles Universal: Pyro can represen..
Jupyter notebook에서 테마를 설정하였다. 기본적으로 jupyter notebook theme라는 유명한 개발자 분의 툴을 쓰면 되는데 사용할 때는 터미널에서 다음과 같은 명령을 해주어야 한다. 나는 기본으로 있는 fira code를 사용하였다. jt -f firacode -fs 14 -altp -tf firacode -tfs 14 -nf firacode -nfs 14 -cellw 90% -T -N -ofs 12 -cursc r
1. JAX 설치 JAX를 설치하는 방법에 대해서는 installment guide에 잘 나와있다.다음 링크로 가면 jax 설치법에 대한 문서를 볼 수 있다. 필자는 GPU를 쓰고 싶었기 때문에 다음을 설치했다. conda를 보통 사용하기 때문에 이렇게 했다. conda install jax cuda-nvcc -c conda-forge -c nvidia 이렇게 설치하고 나서 문제가 발생하였다. 2. JAX에서 GPU 사용하기다음과 같은 warning code를 만났다. WARNING - No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.) 우분투에서 가상환경을 만들고 여기서 JAX를 설치했는..
Matplotlib에서 그림을 그릴 때 legend를 바깥에 배치하고 싶을 수 있다. 이 경우에는 legend의 bbox_to_anchor를 이용하면 된다. matplotlib 공식 문서를 보면 다음과 같이 나와있다. 설명 자체는 간단하다. 4개 원소 튜플로 넣으면 legend의 x,y,너비,높이까지 지정할 수 있다. 2개 원소 튜플로 넣으면 x,y 위치를 지정할 수 있다. 다음과 같은 그림이 있다고 하자. import numpy as np import matplotlib.pyplot as plt x = np.array(range(10)) y1 = x * x y2 = x plt.plot(x,y1,label='quadratic function') plt.plot(x,y2, label='linear func..
Matplotlib에서 figure에 사용되는 font를 보면 Dejavu sans라는 폰트라는데 위와 같은 폰트를 말한다. 실제 그림을 그리면 x, y축이 다음과 같은 폰트로 나온다. (아래 코드에서 mpl.rcParams는 default 옵션인데 자세한 내용은 matplotlib의 디폴트 속성 글을 보면 나와있다.) import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['legend.fontsize'] = 16 mpl.rcParams['figure.titlesize'] = 18 mpl.rcParams['axes.titlesize'] = 18 mpl.rcParams['lines.linewidth']..
데이터 안에 이상한 값이 없는지는 확인하고 싶을 때가 있다. 데이터가 이상하면 당연히 결과도 이상하기 때문이다. 넘파이의 경우에는 아래와 같이 where함수를 쓰면 인덱스를 리턴한다. print(np.where(np.isnan(data)==True)) >>(array([], dtype=int64), array([], dtype=int64)) 위 경우는 내부에 nan이 없기 때문에 빈 array를 return한다. a = np.array([np.nan, 1, 2, 3]) print(np.where(np.isnan(a)==True)) >> (array([0], dtype=int64),) 만약 다음과 같이 nan이 들어있다면 그 값이 있는 index를 리턴한다. 이 때 튜플을 return한다는 점에 주의해야한..