zenn.skin 무료버전 배포중!
자세히보기

Python 68

Python/Syntax
[Python] pathlib

pathlib — Object-oriented filesystem paths Source code: Lib/pathlib.py This module offers classes representing filesystem paths with semantics appropriate for different operating systems. Path classes are divided between pure paths, which p... docs.python.org pathlib은 file system을 PosixPath 객체를 사용해 경로를 객체지향 방식으로 사용할 수 있게 해주는 모듈입니다. pathlib을 사용하면 os 모듈을 사용할 때보다 더 직관적으로 파일과 폴더에 접근할 수 있는 장점이 있습니다. ..

Python/Syntax
[Numpy] hstack

hstack은 두 numpy 배열이 주어질 때 배열들을 가로로 붙여주는 역할을 하는 함수입니다. 최대 3차원까지의 배열에 적용할 수 있으며 첫번째 인자로 받은 배열 뒤에 두번째 인자로 받은 배열을 가로로 붙여 반환합니다. # 1차원 배열에서의 hstack a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) np.hstack((a, b)) # 2차원 배열 c = np.array([[1, 2, 3], [4, 5, 6]]) d = np.array([[7, 8, 9], [10, 11, 12]]) np.hstack((c, d))

Python/Syntax
[Pandas] 함수 정리

pandas 라이브러리에서 사용하는 함수 정리 1. 생성 import pandas as pd # Dict를 입력값으로 받는 경우 # Key는 column이 된다 df = pd.DataFrame({'a': [4, 5, 6, 7], 'b': [8, 9, 10, 11], 'c': [12, 13, 14, 15]}, index=[1, 2, 3, 4]) # List를 입력값으로 받는 경우 # 각 리스트는 row가 된다 df2 = pd.DataFrame( [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]], index=[1, 2, 3, 4], columns=list('abc')) 2. 이중 인덱스 데이터프레임 # index를 MultiIndex로 설정 #..

CS/알고리즘
[Python] CCW(Counter Clock Wise)

Counter Clock Wise는 오른손 법칙을 이용해 주어진 세 점의 방향성을 알 수 있는 알고리즘입니다. 위와 같이 세 점이 주어질 때 이들 벡터와 CCW 알고리즘을 이용해 세 점의 방향을 구할 수 있습니다. A를 기준으로 B와 C에 대한 벡터들의 외적을 구합니다. 여기서는 외적의 결과가 음수기 때문에 오른손 법칙에 의해 세 점이 시계 방향을 갖는 것을 확인할 수 있습니다. 2차원에서의 외적은 z값을 0으로 놓고 계산하여 구할 수 있습니다. x1, y2, z3 = map(int, input().split()) x2, y2, z3 = map(int, input().split()) x3, y3, z3 = map(int, input().split()) u = (x2 - x1, y2 - y1, z2 - z..

CS/알고리즘
[Python] 프림 알고리즘(Prim's Algorithm)

1. 프림 알고리즘(Prim's Algorithm) 프림 알고리즘은 방향이 없는 무방향 그래프에서 비용이 최소가 되는 최소 신장 트리(MST, Minimum Spanning Tree)를 찾기 위한 알고리즘이다. 프림 알고리즘은 그리디 알고리즘이 적용된 방법으로 임의의 노드에서 시작하여 노드를 발견할 때마다 연결된 간선 중 가중치가 가장 작은 노드의 방향으로 순회하는 알고리즘이다. 다음과 같은 그래프가 주어질 때 프림 알고리즘을 이용해 최소 신장 트리를 구하려 한다. 여기서는 1번 노드에서 시작해보자. 최종적으로 다음과 같은 최소 신장 트리를 구할 수 있다. 프림 알고리즘을 이용해 최소 신장 트리를 구하면 어느 위치에서 시작해도 동일한 형태의 최소 신장 트리를 구할 수 있다. 프림 알고리즘은 매번 노드가 ..

CS/알고리즘
[Python] union-find 알고리즘

1. union-find 알고리즘 union-find 알고리즘은 서로 다른 원소가 하나의 집합에 속하는지 확인하기 위한 알고리즘이다. 서로소 집합(Disjoint-set) 알고리즘으로 서로 다른 두 노드가 같은 그래프에 속하는지 확인하는 것이 목적이다. 그래프에서 cycle을 형성하는지 확인하기 위해 사용 두 원소가 같은 집합에 속하는지 확인하기 위해 사용 2. 동작 방법 위와 같은 그래프가 주어질 때, union-find 알고리즘을 이용해 같은 부분집합에 속하는지 확인하려 한다. 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 union-find 알고리즘에서는 각 노드들의 부모 노드들에 대한 테이블을 생성하는데 스스로를 부모 노드로 초기화시켜준다. 1 2 3 4 5 6 7 8 1 2 1 4 5..

Python/Syntax
[Python] while ~ else문

if ~ else문을 이용하면 if 조건식에 있는 조건을 만족하지 못할 때 else에 있는 실행문이 실행된다. if 조건문1: 실행문1 else: 실행문2 이런 조건을 while문에 대해서도 동일하게 적용할 수 있다. while 조건문: 실행문1 ... if ~: break else: 실행문2 만약 while 조건문이 아니라 내부에서 break에 의해 반복문이 멈추면 else에 해당하는 실행문은 실행되지 않는다. 반면 while 조건문에 의해 while문이 멈춘다면 else에 있는 실행문이 실행되게 된다. # 백준 16952: A -> B a, b = map(int, input().split()) cnt = 0 while a != b: if b % 10 == 1: b //= 10 elif b % 2 ==..

CS/알고리즘
[Python] BFS/DFS (Breadth-First Search, Depth-First Search) 구현

1. 그래프의 표현 그래프를 표현할 때는 해당 노드가 어떤 노드와 이어져 있는지를 저장한다. 인접 행렬을 이용해 노드의 관계를 나타내면 메모리의 낭비가 크기 때문에 보통 이어져 있는 노드들의 관계만을 나타내는 방법을 사용한다. # dict를 이용한 그래프 표현 table = {1: [2, 3, 8], 2: [1, 7], 3: [1, 4, 5], 4: [3, 5], 5: [3, 4], 6: [7], 7: [2, 6, 8], 8: [1, 7]} # 리스트를 이용한 그래프 표현 table2 = [[2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, 7]] 생성을 할 때는 아래와 같은 방법으로 생성해줄 수 있다. # dict table = {i +..

Python/Syntax
[Python] glob

1. glob 특정 패턴이나 확장자를 가진 파일들을 불러올 때 사용할 수 있다. glob 모듈의 glob를 사용하면 조건에 맞는 파일명들을 리스트 형태로 반환받을 수 있다. 정규 표현식을 사용할 수 없지만 *나 ? 같은 와일드 카드를 사용할 수 있다. 2. 사용 from glob import glob file_list = glob('cat?.txt') print(file_list) for file in file_list: print(file) from glob import glob file_list = glob('cat1*') for file in file_list: print(file)