본문 바로가기

Data science/Python27

Set, Dict의 자료구조가 검색이 빠른 이유? hash 함수 Summary: set, dict은 해시함수를 이용한 해시값을 저장하고있는 해시테이블이란 자료구조를 사용하기 때문에, 빠른 탐색이 가능함. 해시는 임의의 변수(문자열 등)를 숫자로 변환하여, 매핑하는 것을 의미함. 따라서, 임의의 변수가 오더라도 숫자로 매핑할 수 있고, 이 숫자로 매핑한 경우 인덱스처럼 사용할 수 있어 빠른 검색이 가능함. 도입: 파이썬으로 자료를 저장하다보면 많은 양의 데이터를 저장해야하는 경우가 있다. 가령, 유전정보와 같이 1번 유전자의 100번째의 위치의 DNA가 바뀌었는지 여부 뿐만아니라... 101번, 10,000,000번째의 위치가 변경되었는지, 변경되었으면 무엇으로 변경되었는지 저장한다. 문제는 이렇게 많은 정보를 저장한 것을 읽어, 특정위치(Input으로 주어지는 위치).. 2021. 10. 2.
Python stuck사용법 (16진법) 문자나 숫자를 컴퓨터끼리 송수신하기위해서는 문자나 숫자를 그대로 전송하는 것이 아니라, 이러한 숫자나 문자를 비트단위로 끊어서 전송하게된다. 예를들어 숫자 3을 보내기 위해서는 0011으로 전송하게된다. 우리가 알고 있는 디지털신호(0아니면 1)로 변환해서 보내기 용히하기 때문이다. 이때, 숫자를 16진수로 보내면 최대 한 전송단위 16까지를 보낼수있다. 이렇게 한 전송단위(16비트)을 다시 2진수로 변환하여 송수신할 수 있다. 즉, 파이썬 내부에서 다뤄지는 문자열, 숫자는 파이썬에서 생성된 객체이고, 이를 바로 트랜스포트에 그대로 싣는 것은 안된다는 것이다. 따라서, 우리는 객체를 byte으로 적절히 인코딩을 해줘서 보내고, 컴퓨터는 이를 디지털신호로 바꿔 전송한후, 컴퓨터가 16진수는 숫자를 4bit.. 2021. 8. 1.
pytest 사용법 및 예제 fixture 란? 단위 테스트를 위해서, fixture을 이용하면 사전에 미리 정의된 신뢰할만하고 일관성있는 테스트를 이용할 수 있다. fixture은 환경이나 데이터셋에 대해서도 테스트해볼 수 있다. 이 fixture은 "step"과 "data"을 정의하고 이 테스트를 fixture을 이용한 서비스, 상태, 조작환경등이 인자(argument)을 통해 모두 접근가능하고, 각 fixture는 보통 파라미터를 지정해준다. 그리고 pytest을 이용할 때, 어떤 함수를 테스트할것인지 @pytest.fixture 와 같이 "@"데코레이터를 이용해서 설정할 수 있다. @pytest.mark.parametrize(ids=?) 내 ids란?? parameterize로 전달해주는 파라미터에 대해서 string으로 각.. 2021. 7. 8.
Bucketize continuous variable (구간화) 연속형변수의 구간화(Bucketized) 균등하게 자르는 방법이 있음. 아래와 같이 pandas.cut 메서드를 사용하면 8개의 구간으로 잘려 할당됨 import pandas as pd from sklearn.datasets import load_iris data = pd.DataFrame(load_iris()['data'], columns=load_iris()['feature_names']) pd.cut(data['sepal width (cm)'], 8) 0 (3.2, 3.5] 1 (2.9, 3.2] 2 (2.9, 3.2] 3 (2.9, 3.2] 4 (3.5, 3.8] ... 145 (2.9, 3.2] 146 (2.3, 2.6] 147 (2.9, 3.2] 148 (3.2, 3.5] 149 (2.9, 3.. 2021. 5. 11.
Numpy matrix operation (dot, matmul, multiply) 설명 a @ b: PEP465에서 권장(matrix multiplication). np.dot(a, b): numpy에서 사용을 권장하지 않음. np.matmul: Matrix multiplication 다 내적 e.g) shape (3, 2) x shape (2, 4) => (3, 4) A * B: element wise multiplication 와 matrix multiplication 둘다 지원함 multiplication matrix인 경우와 arrayt인 경우 다름 blog.finxter.com/numpy-matmul-operator/ 2021. 4. 6.
[Jupyter notebook] 가상환경 커널 이용하기 CentOS $sudo yum update $sudo yum install python3-dev python3-pip # Python 3 $sudo pip install --user --upgrade virtualenv 가상환경 생성하고 활성화 하기 $ python3 -m virtualenv venv # 가상환경 폴더가 생성된것을 확인할 수 있다. $ source "venv/bin/activate" # 가상환경 활성화 (venv) $ deactivate # 가상환경 비활성화 주피터 노트북 커널에 가상환경 추가하기 (venv) $ pip install ipykernel $ python -m ipykernel install --user --name "만든폴더명" --display-name "디스플레이커널명".. 2021. 2. 9.