Languages & Frameworks/Python
[python] Jupyter notebook
[python] Jupyter notebook
2017.04.16https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/Help - Keyboard Shortcuts에서 Shortcut을 볼 수 있고 Edit도 가능하다.Keyboard Shortcuts help의 단축키는 H Docstring shortcut : `` shift + tap`` ( twice ) IPython 4.0부터 notebook 기능 등은 jupyter로 옮겨가고, IPython은 Interactive Python 기능만 지원한다고 한다.그래서 notebook을 사용하려면 Jupyter를 사용해야 한다. ```jupyter notebook```기본 IP:port는 localhost:8888 이다. 들어가면 웹에서 편집, 저장, ..
[python] numpy, pandas, sklearn
[python] numpy, pandas, sklearn
2017.03.11NumPy 그냥 python for 돌면 무조건 느리다. C가 아니니까... 파이썬으로 아무리 해봐야 크게 개선이 안됨. 그래서 Pandas나 Numpy가 제공하는 방법 대로 접근하는게 제일 효과적인 성능 개선 방법. ```python import numpy as np x = np.array([1, 2, 3]) print(type(x)) > ``` 특정 값을 가진 index들을 반환받는 방법 : where ```python >>> arr = np.array([[1,2,0],[0,1,2]]) >>> np.where(arr == 0) (array([0, 1], dtype=int64), array([2, 0], dtype=int64)) -> 0,2와 1,0 ``` 산술 연산과 브로드캐스트 넘파이 배열에 대한 ..
[python] url parsing / BeautifulSoup4, bs4
[python] url parsing / BeautifulSoup4, bs4
2017.03.02URL structure```protocol://net_loc/path;params?query#frag```query : &로 구분된 '키=값' 쌍frag : 문서 내의 앵커 등 fragment 지정 ( 목차에서 클릭하면 그 항목으로 이동하는 것 )net_log : 일반적으로 서버의 주소를 나타내지만, 사용자 정보를 포함할 수 있다.net_log 구조는 다음과 같다. ```[user:passwd@]host[:port]```user:passwd 지정은 FTP 등에만 사용하는걸로 알고 있었는데, HTTP에도 사용할 수 있다. Basic 인증 등에 사용하는 듯. 관련 모듈 : urlliburlparse = urllib.parse원래 독립 모듈로 있다가 urllib.parse로 합쳐졌다.URL을 조작할 때 사용..
[python] argparse, python-fire
[python] argparse, python-fire
2017.02.26argparse (docs)원래 파이썬에서 프로그램 실행 시 인자( e.g., ``c main(int argc, char *argv[])`` )를 받기 위해서는 sys모듈의 ``python sys.argv``를 이용해야 한다.```pythonargs = sys.argv[1:]``` 이를 대체하는 argv 파싱 라이브러리로 `` argparse``를 사용하면 더 편하다.(optparse는 업데이트가 중단되어 argparse에 포함 되었다.) ``python sys.argv`` 사용할 필요 없이 ``python argparser.parse_args()`` 하는 순간 알아서 argument를 가져온다.```pythonargparser = argparse.ArgumentParser(description='tis..
[python] 파일 배포, python with C
[python] 파일 배포, python with C
2017.02.26파일 배포보통 `` pyinstaller``로 .exe를 만든 다음 배포한다. python에서 C를 사용하는 방법속도 향상을 위해 pypy를 고려하는 경우도 있는데, pre-JIT가 느린건 그렇다 치더라도native python으로만 구현해야 동작을 보장할 수 있다는 절대적인 단점이 있다. C extension을 사용하는 다른 라이브러리를 사용하는 경우 pypy가 제대로 동작함을 보장할 수 없다. 어느 경우든 C running time은 동일하다고 봐도 된다.간단하게 사용할 때는 ctypes를, 규모있는 라이브러리를 사용할 때는 C extension을( 아마 텐서플로우도 이렇게 만들지 않았을까 싶다. 텐서플로우는 Core에 C++을 사용한다. ) 사용하면 된다. Cythonhttp://cython.org..
[Regex] Python
[Regex] Python
2017.02.23항상 시작 ^와 끝나는 $를 써주는게 좋다!!! 특히 $ 안붙여서 이어지는 문자가 있어도 match로 뜨는 경우가 있다. 정규표현식은 기본적으로 greedy하다는 것을 항상 명심한다. 긴 문자열을 집어 넣을 때, (page html tag 파싱이라던가.) 반드시 greedy/non-greedy를 신경써주어야 한다. JS에서는 $를 사용하지만, python에서는 \를 사용한다. notepad++에서는 둘 다 지원. $& : 일치하는 문자열 $` : 일치하는 부분의 앞부분 문자열 $' : 일치하는 부분의 뒷부분 문자열 $1, $2, $3... $n : n번 서브그룹 Python regular expression http://devdocs.io/python~3.6/library/re raw string은 기본..
[python] import 관련 : 모듈, 패키지, __init__.py, __all__
[python] import 관련 : 모듈, 패키지, __init__.py, __all__
2017.02.23모듈 단독 실행 시 import 경로 문제 ``` ├── common │ ├── __init__.py │ ├── copy.py │ └── clean.py ├── T1036 │ ├── __init__.py │ ├── bar.py │ ├── foo.py ├── run.py ``` 우선, 기본적인 import 동작 방식 python run.py 커맨드로 실행하는 경우, foo.py 파일 내에서 모듈 참조는 아래와 같다. ```python from .bar import BarCls # .으로 참조하는 경우 그 파일 자체의 위치(T1036) 기준 찾는다 from common.copy import CopyNoMetaCls # 절대 경로로 명시하는 경우는 python 커맨드 대상이 되는 파일(run.py 디렉터리) ..
[python] 함수, 클래스, 객체, *args, **kwargs
[python] 함수, 클래스, 객체, *args, **kwargs
2017.02.23```python*args # 가변인수**kwargs # 가변 키워드 인수. key=value 형태의 가변 길이 인수를 받을 때. dict 형태로 넘겨받게 된다.``` 키워드 인수를 반드시 key=value 형식으로만 받고 싶을 때```pythondef test(arg, key=None): pass test(1, 2)```positional arg 다음에 이어서 그냥 인자를 넘기면 알아서 위치대로 키워드 인자로 들어간다. 반드시 ``py key=3``처럼 지정해주어야만 동작하도록 하고 싶은 경우, ``py *``을 적는다. 라이브러리 코드 보면 저런게 꽤 많다.```pythondef test(arg, *, key=None):``` return``python return (a, b)``C 였다면 여러 (타..
[python] List, Tuple, Dictionary, Set, Enumerate, sort 정렬
[python] List, Tuple, Dictionary, Set, Enumerate, sort 정렬
2017.02.23`` list()``함수를 이용해 다른 데이터 타입을 리스트로 변환할 수 있다.`` tuple()``함수를 이용해 다른 데이터 타입을 투플로 변환할 수 있다.`` dict()``함수를 이용해 두 값으로 이루어진 시퀀스를 딕셔너리로 변환할 수 있다. 항목 삭제```pythondel arr[offset]arr.pop(offset)arr.remove(value) # 값으로 삭제``` 값을 이용해 인덱스 알아내기```pythonarr.index(value)``` Array파이썬 기본 리스트 `` []``는 array 보다는 linked list에 가깝다.array를 사용하기 위해서는 array나 numpy를 사용해야 한다. numpy는 좋은 라이브러리이지만, 서드파티 라이브러리를 쓰기 애매한 경우 array도 ..
[python] 정수 실수 자료형
[python] 정수 실수 자료형
2017.02.15파이썬에서는 모든 것이(데이터 타입이나 함수, 프로그램까지) 객체로 구현되어 있다.함수가 일급 객체이기 때문에 JS같이 함수형으로 프로그래밍 할 수도 있다. 파이썬에서 변수를 값으로 초기화하면 자바의 wrapper class 비슷하게 동작한다.1) 값을 담은 객체로 생성된다. 2) 변수는 이 객체를 가리킨다.`` a = 3`` 하면 `` a``라는 변수에 `` 3``이 담기는게 아니라 `` 3``이라는 정수형 객체가 생성되고 `` a``가 객체 `` 3``을 가리키게 된다.자바의 wrapper class도 값을 담은 객체가 생성되고 이를 가리키게 된다. 그러나 값을 4로 변경하고 싶을 때, 자바의 경우 객체에 담긴 값을 변경하거나 새로운 4라는 객체를 생성하는 두가지 방법을 사용할 수 있지만 파이썬은 후..
[python] 팁, 메모
[python] 팁, 메모
2017.02.06hidden-features-of-python 설정값 (config file. properties, json, yml) 관리하기 https://mingrammer.com/ways-to-manage-the-configuration-in-python/ editable로 설치 ```python pip install --editable . -e, --editable Install a project in editable mode (i.e. setuptools “develop mode”) from a local project path or a VCS url. ``` 패키지 수동 설치 패키지 압축을 해제하고 `` dist``(distribution) 폴더로 이동해서 다시 tar 압축 해제 반드시 해당 폴더에서 진행할..