본문 바로가기

프로그래밍/Python

(96)
이등변직각삼각형 이등분각 무한급수 문제는 http://ggomjirak.tistory.com/224. 이등변 직각삼각형에서 아래 그림의 회색부분의 넓이의 합을 구하는 것이 문제임. 삼각형을 분할하는 방법은, 남겨진 각을 계속 이등분하는 것임. (선분 (0, 1)을 1/2지점, 3/4지점, 7/8지점, ... 으로 분할하는 것처럼.) 값이 얼마인지 궁금하여 파이썬으로 간단히 계산해 본 소스코드는 다음과 같다. import math # . # |\ # |o\ # | \ # | \ # | \ # | \ # | \ # | \ # | \ # ._________\____ # P # # pi / n \ # o_n = ---- | 1 - 0.5 | # 4 \ / # def P(n): o_n = (math.pi/4)*(1 - (.5)**n) return..
[Python] cmd 에서 python 인터프리터 진입시 UnicodeDecodeError 아나콘다 프롬프트에서 python 을 입력하여, 파이썬 인터프리터로 진입하려 하였을 때, 아래와 같은 UnicodeDecodeError 가 발생했다. 인터프리터 진입시마다 에러 메시지가 발생하여 꺼림직해서, 검색을 해서 해결책을 찾아봤다. 에러메시지를 보면, read_history_file 함수 안에서 파일을 open 하는 부분에서 에러가 발생하는 것이었다. 스택오버플로우의 한 질문답변에서 원인을 찾았다. %USERPROFILE%/.python_history ( C:\Users\username\.python_history ) 파일(윈도우 환경임. 다른 운영체제는 위치가 다를 것.)에 파이썬 인터프리터 명령이 저장되어 있는데, 이 파일에 한글등이 포함되어 있으면, 파일을 읽는 과정에서 UnicodeDeco..
[Python|OPENAPI] 기상청 기상관측 자료 OPENAPI requests 샘플코드 기상청에서 openapi 로 제공하는 자료를 openapi 를 이용하여, 받아서 활용할 수 있다. 보통 python 으로는 requests 모듈을 이용하여, requests.get(url, params=params) 형식으로 간단하게 가져와서 내용은 json으로 파싱하여 사용하는 것이 익숙한 방법이다. 그런데, 기상청에 회원가입하여 발급받은 apikey 에 requests 에서 자동으로 url encoding 을 해 버리는 특수문자 %와 / 이 포함되어 있었다. 그래서, 기본적인 방법으로는 500 에러가 발생하였으며, 약간의 꼼수 코드가 필요했다. 기상청 게시판을 보니까 비슷한 상황에 있는 사람들이 있는 것도 같아서, 내가 사용하여 성공한 코드를 포스팅한다. 사용한 코드 스니펫( 즉 아래의 noq_Ses..
pandas 의 read_excel 읽기 속도를 좀 더 빠르게 하는 방법 출처 : https://stackoverflow.com/questions/50695778/how-to-increase-process-speed-using-read-excel-in-pandas pandas 의 read_excel 읽기 속도를 좀 더 빠르게 하는 방법 읽을 행과 열의 수를 제한한다 parse_cols, skip_footer 인자를 이용하여 행과 열의 갯수를 제한할 수 있다. 이렇게 하면 읽기 시간을 줄일 수 있고, sheetname = None 인 경우에도 잘 동작한다. 예를 들면, 다음과 같이주면, 첫 3 컬럼, 그리고 100줄짜리 시트라면, 처음 20줄만 읽어들이게 된다. df = pd.read_excel('file.xlsx', sheetname=None, parse_col..
[Anaconda] jupyter notebook 500 internal error anaconda 에서 jupyter notebook 을 잘 썼었는데, 최근 (포스팅 작성시점은 2019년 3월 15일임) 업데이트한 이후에 jupyter notebook 을 실행하여, 어떤 .ipynb 파일을 열어보거나 새롭게 만들려고 하면, 500: Internal Error 란 메시지만 나오는 문제가 발생하였다. 그래서 에러메시지로 조금 검색해 보니, tornado 가 6.0 으로 버전업 하면서 발생시킨 문제라는 이야기가 있었다. ( https://github.com/jupyter/nbconvert/issues/894 ) 아마도 6.0.1 이 나온다면 해결될 것이라고도 하는데, 아직 패키지가 안 나왔으니, 문제를 해결하려면, tornado 버전을 낮추어야 한다. anaconda 의 conda 패키지매..
PIP 수동으로 설치하기 참고 : https://github.com/pypa/pip/issues/2351#issuecomment-69994524 pip 를 업그레이드 설치하다가 pip 명령이 들지 않는 문제가 발생했다. 윈도우 환경에서는 pip 를 업데이트할 때, python -m pip install -U pip로 명령을 주지 않고, pip install -U pip 로 명령을 주었을 때, 자신을 삭제하고 업데이트된 버전의 설치는 진행하지 않고 끝내면서, pip 가 지워지는 사태가 가끔 발생하는 것 같다. (리눅스 환경에선 문제가 없음.) (aigpu3664) D:\Temp> pip list Traceback (most recent call last): File "D:\Python3664\lib\runpy.py", line 1..
[Konlpy|Mecab] Ubuntu 에서 Mecab-ko를 설치했으나, Mecab이 설치되었는지를 다시 묻는다. Mecab 형태소 분석기를 이용해 보기 위해서, Ubuntu 환경에서 konlpy 와 Mecab-ko 설치를 진행해 보았다. http://konlpy.org/ko/latest/install/ 의 가이드를 따라 mecab 설치까지 진행하였으나, mecab 은 구동되지만, Mecab 클래스 인스턴스를 만드는 부분에서 mecab 설치가 안 되었다는 에러가 발생했다. 환경은 Ubuntu 18.x 이고, 다른 파이썬 패키지와의 꼬임을 방지하기 위해서, python3 venv 를 이용해 가상환경(virtual env)를 따로 만들어 진행했다. 문제는 가이드에서 제공하는 스크립트는 가상환경에 대한 고려가 되어 있지 않았기 때문에, 가상환경에 수동으로 추가적으로 패키지를 깔아주어야 했던 것이다. 진행한 순서는 다음과 ..
[Python|Numpy|Matplotlib] 푸리에 시리즈 사각파 10년전 포스팅에 C로 사각파 푸리에 시리즈를 구현한 것이 있었다. 이걸 파이썬, numpy, matplotlib 를 이용해 다시 구현해 본다. import numpy as np import matplotlib.pyplot as plt def F(n, X): """ 1 F (t) = ------- sin ( (2n+1) t ) n 2n + 1 """ return np.sin((2*n+1)*X)/(2*n+1) def RectWave(n, X): """ n Sigma F (t) k=1 """ y = np.zeros(X.shape) for k in range(n+1): y = F(k, X) + y return y X = np.linspace(-5, 5, 1000) for i in (1, 5, 50, 100):..