Loading [MathJax]/jax/output/CommonHTML/jax.js

분류 전체보기 62

유연한 matplotlib subplot 사용하기

figure canvas를 분할하는 subplot 하나의 이미지에 다단으로 이미지를 삽입하고자 할 때 subplot으로 canvas를 분할하고 위치를 지정할 수 있다. plt.subplot,, 행과 열에서 형태를 지정하고 인덱스로 그래프를 넣을 위치를 지정하게 된다. canvas를 행과 열에 맞게 분할하고 인덱스로 figure를 삽입할 위치를 지정한다. 아래는 plt.subplot3,2,idx로 canvas를 분할한 예시이다. 고정된 분할 예를 들어 canvas를 4개의 행으로 분리해 4개의 figure를 그리고 싶을 때는 plt.subplot4,1,를 고정으로 사용하면 된다. 유연한 분할 만약 1행에는 1개의 figure를 그리고, 2행에는 3개의 figure를 그린다면 다..

numpy array를 사용할 때 for문을 피해야하는 이유

Avoid for loops with numpy array numpy는 배열을 효율적으로 다룰 수 있도록 만들어진 라이브러리입니다. 같은 배열을 저장하고 있더라도 list에 비해 효과적으로 메모리를 사용하고, tensor간 연산을 지원해 계산 속도에서도 큰 이점을 가집니다.1 요소별로 연산을 필요로 할 때, for 문을 활용해 계산을 하면 numpy의 장점을 활용하지 못합니다. numpy는 범용 함수ufunc을 지원하기 때문에 for문을 사용할 때와 비교가 안될 만큼 효율적인 요소별 계산을 할 수 있습니다. 아래 예를 보게 된다면 numpy 배열에 요소별 연산을 할 때 for 문이 얼마나 비효율적인지 알게 됩니다. 속도 뿐만 아니라 코드를 작성할 때도 for 문을 사용하지 않아도 되기 때문에 간결하게..

python 함수를 아름답게 사용하기

이 글은 슬기로운 파이썬 트릭의 내용을 정리한 글입니다. 3.1 파이썬 함수는 일급 객체다 파이썬에서 함수는 객체이기때문에 변수에 할당하고 데이터 구조에 저장하고 다른 함수에 인자로 전달하고, 함수의 값에서 반환할 수 있다. 이 한 문장이 이 포스팅의 요약이다. 개인적으로 문자형을 다루는 예시보다 숫자를 다루는 것이 이해가 더 잘 될 것이라고 생각해 성과금 관련 상황으로 예시를 수정했다. 함수는 객체object다 파이썬에서 모든 것은 객체이고 변수에 할당된다. 함수도 마찬가지로 변수에 할당될 수 있다. 위와 같은 경우에 level_1 뒤에 가 붙지 않아 호출되지 않고, add_one은 level_1 함수를 가리키는 변수가 된다. one 변수로 plus_one 함수를 호출할 수 있다. 이때 del ..

_var, var_, _var_, __var__과 같이 선언된 변수의 의미를 설명

2021-04-02 수정 dunder method 예제 추가* 이 글은 슬기로운 파이썬 트릭의 내용에 기반해 작성한 글입니다. 2.4 밑줄 문자와 던더 파이썬에서 변수명에 밑줄을 추가하는 경우가 있는데 각각은 의미를 가진다. _var 변수 앞에 하나의 _를 붙이는건 method 내부에서만 쓰일 것이라는 의도를 알리는 목적 이 방식으로는 해당 변수에 접근하는 것을 방해하지는 않음 그러나 from module import *와 같은 와일드 카드 임포트방식으로 모듈을 불러오는 경우에 _가 앞에 붙은 것은 모두 가져오지 않음 var_ 이 경우에는 python에서 변수로 사용할 수 없는 이름으로 선언하고 싶은 경우에 사용 예를 들면, class나 int는 파이썬의 키워드로 사용하고 있기 때문에 사용할 수 없지만 ..

unittest, Test-driven develope를 위한 라이브러리

Test-driven developTDD는 개발이 끝난 후에 테스트를 진행하는 것이 아니라, 작은 단위의 기능을 수행하는지 여부를 테스트를 통과한 코드를 전체 코드에 리팩토링해 병합하는 방식의 개발 방법을 이야기합니다. TDD의 시작은 unittest를 작성하는 것입니다. Unit test code를 테스트 하는 것은 bug가 없이 의도한 바를 구현하는데 중요하지만 데이터 사이언스에서 쉽게 간과됨 프로젝트가 커지고 복잡해짐에 따라 예상치 못한 버그가 발생할 가능성이 매우 높음 unittest는 작성한 코드가 의도한대로 작동하는지 여부를 검증하는 과정 unit test의 필요성 testing을 작성하는 것은 문제가 없이 clean하고 사용성 높은 코드를 작성하는데 필수적임 어느 이상의 양을 가지는 복잡..

pyforest, 42개의 라이브러리를 한 줄의 코드로 import

Feel the bliss of automated imports[1] 데이터 분석을 위해 프로그램을 작성할 때 기본적으로 임포트해야하는 pandas, numpy, matplotlib, sklearn 등의 라이브러리들이 있음 pyforest는 여러 줄의 import ~ 를 적는 수고를 덜어줄 수 있는 라이브러리임 관습에 따라 pandas as pd, numpy as np, matplotlib.pyplot as plt임포트 해주어 기존에 사용하던 그대로 코드 작성을 하면됨 설치 jupyter 셀에서 pip을 사용해 설치할 수 있음 !pip install pyforest 적용 예 import pyforest로 pyforest를 임포트하면 42개의 라이브러리가 자동으로 임포트 됨 다음의 방식으로 임포트 된 라이..

matplotlib 사용시 메모리 누수

Memory Leakage 프로그램이 불필요한 메모리를 점유하고 있는 것을 메모리 누수memoryleakage[1] 메모리 누수를 발생시키는 요인 중 matplotlib 라이브러리를 사용할 때 메모리 누수가 발생하기 쉬움 각 iteration마다 이미지를 그리는데 필요한 메모리를 할당하고 이미지를 저장하는데 다음 iteration으로 넘어가도 해당 메모리를 점유하기 때문에 다음과 같은 경우에 메모리 누수가 발생 메모리 사용량 추적을 위해 다음 블로그의 코드를 사용했습니다.[2] import matplotlib.pyplot as plt import numpy as np memory_ = np.zeros100 dummy_data = np.random.rand100,100,100,3 for i i..

보기 좋은 쉼표 배치

이 글은 슬기로운 파이썬 트릭의 내용을 정리한 글입니다. 2.2 보기 좋은 쉼표배치 파이썬의 리스트, 딕셔너리, 세트 상수에서 항목을 추가, 제거할 때 유용한 팁 git과 같은 소스 컨트롤 시스템에서 변화를 보여줄 때 line별로 표시를 함 아래와 같이 names 리스트를 한 행에 선언하면 수정사항을 확인하기 곤란함 names = ['Alice', 'Bob', 'Dilbert'] 모든 행을 쉼표로 끝내자 다음과 같이 names 리스트를 여러 행에 걸쳐 선언하면 수정사항을 보기 편리함 pythonnames=[Alice,Bob,Dilbert] 이렇게 작성했을 때, 수정사항을 명확하게 볼 수 있지만 콤마,를 빼먹어 예상치 못한 버그를 만들 수 있음 python에서 공백으..

assert문으로 디버깅

이 글은 슬기로운 파이썬 트릭의 내용을 정리한 글입니다.2.1 assert문으로 방어하기단언문은 어떤 조건을 테스트하는 디버깅 도구로 유용하다.프로그램을 작성할 때 예상 범위 외로 벗어날 때 에러를 발생시킨다.assert 조건에서 벗어난 경우에 에러를 발생시킨다.## assertassert expression1, 'expression2'assert 프로그램에서 만족할 것으로 생각하는 조건이고, expression2는 expression1이 False일 때 에러와 함께 출력할 표현이다.예외처리를 하지 않는 이유 try...except...에러를 발생시켜 다시 시도할 수 있는 버그가 아니라 프로그램은 실행되지만 존재하는 버그를 찾는데 활용할 수 있다.따라서 디버깅을 할 때, 프로그램을 중단시키..

Affine 변환

1. 선형 변환 선형성 linearity 수학에서 선형성은 두 가지로 정의된다. Additivity : f(a+b = fa + fb) Homogeneity : f(ca = fa) (c는 상수) 기억하기 위해서 f(c1a+c2b = c_1fa + c_2fb)를 만족하면 선형의 두 조건을 만족하는 셈이다. 앞으로 이 식으로 선형성을 확인하겠다. 선형 함수 linear function 단일 변수 일차 함수 "선형"이라는 말 때문에 선형 함수를 1차 함수로 오해할 수 있다. 일반적인 단일 변수 일차 함수는 f(x)=mx+n로 표현할 수 있다. $$ fc1a+c2b = mc1a+c2b + n = mc_1a +mc_2b +n \cdots..

Data science 2022.07.24