본문 바로가기

Programing/Python4

Hungaian algorithm DETR 을 공부하다가 Loss을 계산하면서 Hungarian algorithm을 사용하는데 나 빼고 모두 아는 것처럼...슉 지나가버리길래 분노의 정리 글을 작성한다. ㅜ 상황을 가정해보자. 직원이 3명 있고, 작업이 3개가 있다. 직원 각자가 작업을 수행했을 때 얻을 수 있는 수익이 있다. 이를 정리하면 3x3의 table이 나온다. 행을 직원으로 볼지, 열을 직원으로 볼지 크게 중요하지 않으니깐 편한 대로 보면 된다. 중요한 점은. 각 직원은 하나의 task만 맡을 수 있다는 것이다. 즉, 각 행과 각 열에서 2개 이상을 선택하면 안된다는 것이다. 상황은 정의 됐고 본격적으로 Hungarian Algorithm 설명을 들어가자 Ex 1) 바로 계산 되는 경우 각 행에서 가장 작은 작을 각 행에 빼준.. 2023. 11. 10.
행열 transpose - ( zip응용 ) 2차원 행열이 다음처럼 주어져있다고 하자. arr = [[1,2,3],[4,5,6],[7,8,9]] 이중 for을 써서 행열을 뒤집을 수 있다. new_arr = [[], [], []] for i in range(len(mylist)): for j in range(len(mylist[i])): new_arr[i].append(mylist[j][i]) * 연산자의 이해 다른 방법을 알아보기 전에 * 연산자의 이용방법을 하나 알아보자. a, b, *c, d = 'a', 2, 'e', 4, 5 print(a,b,c,d) # a 2 ['e',4] 5 a,b,*c,d = 1,2,3,4,5 print(a,b,c,d) # >> 1 2 [3,4] 5 *c는 남은 성분 모두를 받아준다. zip()의 이용 arr = [[.. 2023. 10. 7.
Numpy의 boolean 조건으로 index 배열 slicing 두 가지 배열을 생성해서 살펴보자 import numpy as np arr = np.arange(20).reshape(5,4) arr Boolean indexing을 할 때는 Boolean의 원소 개수가 원래 배열의 행(axis = 0) 의 원소 개수와 같아야한다. 지금은 5행 4열의 arr를 만들었으니, 요소 5개짜리 배열을 만들어보자. axis_ABC = np.array(['A','A','B','C','C']) axis_ABC numpy에 단항 조건문을 썼을 때, 모든 요소와 연산을 한다. axis_ABC == 'A' 이제 행렬 arr를 axis_ABC를 이용해 slicing을 해보자. 1. 특정 조건을 만족하는 행 선별하기 : == arr[axis_ABC == 'A'] axis_ABC의 요소들은 a.. 2023. 10. 3.
클래스 상속, super().__init__() -> 오버로딩 Parents 클래스와 Children 클래스를 만들어서 부모 클래스를 상속해보자. 클래스를 상속하면 반복적인 함수를 작성하지 않고 잠깐 빌려쓸 수 있기 때문에 간편해진다. class Parents: def __init__(self, name, age): self.name = name self.age = age def get_name(self): print(f'제 이름은 {self.name}입니다.') def get_age(self): print(f'제 나이는 {self.age}살 입니다.') 일단 Parents 클래스를 정의하자, parents_a = Parents('이수지', 50) parents_a.get_name() # 제 이름은 이수지입니다. parents_a.get_age() # 제 나이는 5.. 2023. 9. 25.
728x90
반응형