언어/파이썬
-
최댓값과 최솟값언어/파이썬 2021. 1. 12. 12:42
최댓값과 최솟값의 초깃값을 지정하는 방법에는 여러 가지가 있다. 우선 첫번째로는 sys를 사용하면 위와 같이 maxsize를 사용하면 된다. 이 경우 9223372036854775808 가 나온다. 그 다음 float()를 사용하여 하는 방법도 있다. 이 경우 "float('inf')"가 생성되는데 이것이 sys.maxsize 보다 크다 하지만 알고리즘을 풀때는 보통 범위가 주어지기 때문에 sys.maxsize만 써도 충분하다. 마지막으로 가장 않좋은 방법인 999999999를 쓰는 방법이 있다. 물론 알고리즘을 풀때 사이즈를 다 정해주어서 크게 상관이 없지만 파이썬의 숫자형은 임의 정밀도 를 지원하며 사실상 무한대의 값을 지원하기 때문에 sys.maxsize를 선언하는것도 그렇게 큰 의미는 없다. 하지..
-
파이썬 내장함수들언어/파이썬 2021. 1. 11. 23:09
파이썬은 여러가지 내장 함수들이 있다. 모든것을 외우면 물론 좋겠지만 체득 하는것이 더 효율적이라고 판단하여 기억이 나지 않을때 마다 하나씩 채우기로 한다. 1. zip 2. range 3. any 4. all zip zip()은 2개 이상의 시퀀스를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플시퀀스를 만드는 역할을 한다. 밑의 사진을 예시로 설명해보겠다. 파이썬 2에서는 zip()의 결과가 바로 리스트가 된다. 하지만 파이썬 3+에서는 제너레이터를 리턴한다. 제너레이터를 리턴하게 되면 전의 포스팅 처럼 메모리 적인 부분에서 좀 더 효율적으로 사용할 수 있는 이점이 있다. 제너레이터에서 실젯값을 추출하기 위해서는 다음과 같이 list()로 한번 더 묶어주면 된다. 아울러 zip()의 결과 자체는 리..
-
정적메소드와 클래스메소드언어/파이썬 2021. 1. 9. 16:33
파이썬에서 해당 문제는 클래스안에서 다뤄진다. 보통의 인스턴스 메소드가 객체의 인스턴스 필드를 self를 통해 접근할 수 있는 반면, 정적 메소드는 이러한 self 파라미터를 갖지 않고 인스턴스 변수에 엑세스 할 수 없다. 예를 들어 현재 정적메소드로 되어있는 is_square함수를 보면 어떠한 인스턴스 필드를 사용하지 않는것을 볼 수 있다. 보통 staticmethod는 객체 필드와 독립적이지만 로직상 클래스내에 포함됭야 하는 메소드에 사용된다. 이는 메소드 앞에 @staticmethod라는 Decorator를 표시하여 해당 메소드가 정적 메소드인것을 표시한다. 클래스 메소드는 메소드 앞에 @classmethod 라는 Decorator를 표시하여 해당 메소드가 클래스 메소드라는 것을 표시한다. 클래스 ..
-
id VS data_ptr()언어/파이썬 2021. 1. 1. 18:44
아이디 연산자(Identity Operators) is : 양쪽 Operand가 동일한 Object를 가리키는지 아닌지를 검사합니다. is not : 양쪽 Operand가 다른 Object를 가리키는지 아닌지를 검사합니다. 동일한 객체 여부를 판별하는 연산자이다. id() 함수는 객체를 입력값으로 받아서 객체의 고유값(레퍼런스)을 반환하는 함수입니다. id는 동일한 객체인지 판별하기 위해서 사용하는 함수 이다. 메모리 주소 연산자(Identity Operators) 변수.data_ptr() 메모리 주소값을 확인하는 함수이다. 결과값으로 메모리 주소가 나온다. 그렇다면 여기서 질문 두 변수 a와 b의 data_ptr()의 값이 같은데 id값이 다를 수 있을까? => 있다. 예를들어 a = torch.ten..
-
numpy [...]언어/파이썬 2021. 1. 1. 13:20
파이썬 라이브러리중 하나인 numpy는 가장 많이 사용되는 라이브러리 중 하나이다. (저도 종종 사용합니다.....) 그 중 처음보는게 있어서 정리해본다. class MatMul: def __init__(self , W): self.grads = [np.zeros_like(W)] def backward(self, dout): self.grads[0][...] = dout 과 같은 형태를 보게 되었는데 여기서 [...]를 사용하게 되는 이유는 무엇일까? 사실 이 형태는 전에 포스팅 했던 S = Q[:] 형태와 비슷한 형태이다. 즉 S의 id값은 변경되지 않고 Q의 값을 그대로 취한다. 이게 Numpy 버전으로는 [...]로 생각하면 된다. 이렇게 하는 이유는 무엇일까? 바로 grads의 값을 바꿔도 dou..