Python

    [Python] Python Class에 대한 기초 정리하기

    [Python] Python Class에 대한 기초 정리하기

    절대 내일 객체지향 시험이라서 쓰는 포스팅 아님 지금까지 계속 공부 해야지 해야지 했던 객체지향에 대한 내용을 포스팅 해보겠다 ! :3 # Python의 Class Python에서 Class는 user-defined abstract data type이라고 볼 수 있다. 여기서 Abstract Data Type(ADT)란 (1) Encapsulation과 (2) Information hiding을 만족하는 객체의 class를 일컫는다. 각각을 자세히 이론적으로 알아보자면 다음과 같다. Encapsulation : 절차지향언어들과 달리 data type declaration과 operation이 함께 제공되는 것 Information hiding : 알고리즘과 데이터에 대한 detail을 굳이 제공하지 않는..

    [Python] 디렉토리 내 특정 파일 삭제하기

    [Python] 디렉토리 내 특정 파일 삭제하기

    이 Python 카테고리에는 각종 잊기 싫은 잡기술만 써놓는 것 같지만.. 기분탓이다 ! Python으로 특정 파일명을 가진 파일을 한번에 삭제할 수 있는 아주 이득인 방법을 알아냈다. 바로 다음과 같이 실행하면 된다. "특정문자" 안에는 삭제하고 싶은 파일들에 공통으로 들어간 특정 문자를 넣어주면 된다! import glob import os [os.remove(f) for f in glob.glob('폴더 경로/*특정문자*')]

    [Python] 디버거 pdb 사용법 - 이 좋은걸 지금 알았다니..

    [Python] 디버거 pdb 사용법 - 이 좋은걸 지금 알았다니..

    아주 복잡한 딥러닝 코드를 보다보면.. 디버깅 해야할 때가 한둘이 아니다! 특히 모델 특정 부분의 레이어의 차원이나, 무엇이 input으로 들어가는지 정확하게 파악하기 위해서는 디버깅이 필수적이다. 과거의 나는.. 이를 위해 주피터로 모든 config 파일과 dataloader부터 차례로 써내려가며 똑같은 환경을 만들어주기 위해 노력했으나... 이는 너무 불편할 수 있다. 따라서 이럴 때 python 전용 디버거 pdb를 사용하면 아주 간편하다! 사용법을 간단히 알아보자! # pdb 사용법 사실 구글링을 해보면 약 두가지의 사용법이 나오지만, 딥러닝 모델을 디버깅할 때는 특정 부분의 변수가 필요한 경우가 많으므로 하나의 유용한 방법만 공유하겠다. 내가 모델 내에서 디버깅하고 싶은 부분 아래에 다음과 같이..

    [Python] Segmentation label 시각화하기 - 픽셀 값이 너무 작을 때

    [Python] Segmentation label 시각화하기 - 픽셀 값이 너무 작을 때

    컴퓨터비전을 하다보면 segmentation label 픽셀값이 너무 작아서, imshow 등으로 시각화를 하면 잘 보이지 않을 때가 있다. 예를 들어서 binary segmentation이라 픽셀이 [0, 1]로 구성되는데, 이를 시각화하면 1은 너무 작은 픽셀 값이라 모두 검정 색으로 보이는 것이다. 따라서 이럴 때 시각화를 편하게 하는 두가지 방법을 기록해 놓으려고 한다. 1. matplot imshow 이용하기 편하게 matplot을 이용할 수 있다. 다음과 같이 말이다! import matplotlib.pyplot as plt plt.imshow(array) 그럼 아래와 같이 가시적인 이미지를 얻을 수 있다. (lane detection dataset 이다) 한가지 단점은, 가로 세로 축이 표시..

    [Python] shutil과 os로 디렉토리, 폴더 조작하기

    [Python] shutil과 os로 디렉토리, 폴더 조작하기

    컴퓨터 비전을 하다보면 디렉토리, 폴더 단위에서 python으로 파일을 나누거나 작업해야할 때가 생긴다. 따라서 간단한 명령어를 정리해놓으려고 한다. :) # 파일 리스트 출력하기 import os os.listdir(path) # 특정 파일의 경로를 다른 곳으로 이동하기 단 이 경우에는 "이동"이므로, 원래 저장소의 파일은 이동되어 존재하지 않게 된다. import shutil shutil.move(현재 파일 경로, 이동할 경로) # 특정 파일의 경로를 다른 곳으로 복사하기 위 경우 말고 원본 저장소에도 파일을 남겨두고 싶을 때는 copy를 하면 된다. import shutil shutil.copy(현재 파일 경로, 이동할 경로)

    [백준] 치킨배달(Python) - 구현 & 백트래킹

    [백준] 치킨배달(Python) - 구현 & 백트래킹

    # 문제 문제가 언뜻 보면 복잡해보이지만, 사실 M개의 치킨집을 선택하는 최적의 입지를 구하는 문제다. 여기서 최적의 입지의 기준이란 각 집으로부터 "치킨거리"의 합이 가장 작아지는 M개의 치킨집을 고르는 경우를 구하는 것 ! "치킨거리"를 구하는 공식 또한 인덱스를 기준으로 하기에 그렇게 어렵지 않다. # 입출력 # Idea # Code 우선 이 문제는 구현과 백트래킹으로 풀 수 있으므로, 구현으로 푸는 방법을 먼저 소개하겠다. itertools의 combination 함수를 이용하면 쉽게 구현 가능하다. """ 치킨 배달 - Combination으로 먼저 풀기 """ from itertools import combinations # 해당 치킨집 조합과 1들의 거리를 리턴하는 함수 def distanc..

    [백준] 스타트와 링크(Python) - 백트래킹

    [백준] 스타트와 링크(Python) - 백트래킹

    # 문제 문제가 복잡해 보일 수 있지만, 사실 아래와 같은 diagonal 하게 대칭인 능력치 행렬이 주어지면, 두 팀의 능력치 차이가 최소가 되도록 팀을 나누고, 그 최소값을 반환하는 문제이다. # 입출력 # Idea 이 문제는 생각보다 이해하기도, 아이디어를 생각하기도 어려웠던 문제다. 그럼에도 불구하고 내가 문제를 풀 때부터 계속 들었던 생각은 능력치 행렬은 대각선 대칭 행렬이라는 것! 이 점을 잘 이용하고 싶었는데, 풀이과정이 잘 생각나지는 않았다. 따라서 이 문제는 아래와 같은 아이디어로 접근하면 된다. 우선 내 가장 큰 고민은 DFS의 노드로 어떤 것을 넣을까였는데, 1부터 N까지 담긴 노드를 그냥 생성하고 이들로 visited 여부를 체크해 팀을 나눈다고 생각하면 편하다. 위 그림에서 노란색..

    [알고리즘] 수학 관련 알고리즘 Code - 에라토스테네스의 체, 유클리드 호제법

    [알고리즘] 수학 관련 알고리즘 Code - 에라토스테네스의 체, 유클리드 호제법

    기초적인 수학적 알고리즘의 코드를 모아놓은 간단한 포스팅이다! 소수를 구하는 알고리즘과 최대공약수를 구하는 알고리즘! 1. 에라토스테네스의 체 소수를 구하는 알고리즘 특정 배수를 지워가는 식으로 전개된다. def era(n): """ Input : 몇까지 탐색할지 Output : n까지 숫자 중 소수를 포함한 리스트 """ a = [False, False] + [True] * (n-1) primes = [] for i in range(2, n+1): if a[i]: primes.append(i) for j in range(2*i, n+1, i): a[j] = False # 배수를 지운다! return primes 2. 유클리드 호제법 최대공약수, 최소공배수 구하기 유클리드 호제법은 최대공약수를 구하는 알..