목록AI (114)
기록하는삶

지난 글에 이어 작성한다. 6) Comparisons numpy의 비교 연산 역시 element wise operation이다. any는 각각 원소에 비교 연산을 진행하여 하나라도 참이면 True, 그렇지 않으면 False를 반환한다. all은 각각 원소에 비교 연산을 진행하여 모두 참이면 True, 그렇지 않으면(하나라도 거짓이면) False를 반환한다. np.isfinite()을 통해 발산 여부를 확인하거나 np.isnan()을 통해 NAN(Not a Number)값 여부를 확인할 수 있다. array끼리의 비교도 가능하다. boolean을 원소로 갖는 array를 반환해준다. 복수의 조건에 대한 and/or 연산의 결과를 구할 수도 있고, 특정 boolean array에 not 연산을 적용할 수도 ..

Numerical Python, Numpy에 대해 정리해본다. 이름에서 알 수 있듯 과학 계산 등을 위한 '수치적인' 기능들을 제공하는 모듈로, 파이썬에서의 행렬과 벡터 연산과 같은 array 연산의 표준으로 pandas 등의 데이터 분석이나 tensorflow, pytorch 등의 DL 프레임워크를 사용하기 위해서도 필수적으로 익혀야하는 것이 numpy이다. 0) numpy의 배열, ndarray 나는 처음 배울 때 이게 얼마나 편리하고 강력한지 몰랐지만, 파이썬의 가장 큰 특징 중 하나인 dynamic typing 덕분에 위와 같은 일이 list에서는 가능했다. 이것이 가능한 이유는 파이썬의 list가 실제로 연속된 메모리 공간에 할당되는 것이 아니라, 각각의 원소가 위치한 메모리 주소만을 연속적으로..

특정한 패턴을 가지는 문자를 표현하는 공식을 정규식 혹은 정규표현식이라 하는데, re 모듈과 함께 정규식을 적절하게 사용하면 문자열 다루기나 데이터 크롤링 등의 작업에서 효율적인 작업을 할 수 있다. 0) 정규식 연습장 https://regexr.com/ RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com 꿀팁이다. 해당 링크로 이동하면, 테스트하고 싶은 텍스트를 입력한 뒤에 손쉽고 보기 좋게 정규식 표현을 해당 텍스트에 적용해볼 수 있다. 1) 메타 문자 상당 부분 점프 투 파이썬의 내용을 참고하였다. 정규식에서는 원래..

파이썬의 collections에서는 큐, 스택, 사전 등의 자료구조와 관련된 모듈들을 제공한다. deque, Counter, defaultdict 외에도 OderedDict, namedtuple 등도 있지만 유용해보이는 앞의 세 개만 간단히 정리해본다. (OderedDict은 파이썬 3.6에서 dictionary가 순서를 보장하도록 업데이트 되면서 필요가 적어졌고, namedtuple은 보통 클래스로 구현해 사용성이 떨어진다고 한다.) 1) deque 큐, 스택의 구현을 위해 정말 빈번하게 사용되는 모듈이다. 파이썬의 기본 list로도 두 자료구조를 모두 구현할 수 있긴하지만, deque가 훨씬 더 빠른 계산 효율을 보여주기도 하고 원형 큐 등의 자료구조들까지도 구현할 수 있어 사용성이 좋다. 이것이 가..

파이썬도 일종의 언어이자 작성된 코드는 글에 해당하므로 문법처럼 꼭 지켜야만 실행되는 것은 아니더라도, 코드의 가독성과 통일성을 위해 존재하는 관습(convention)이 존재한다. 이는 PEP8을 기반으로 만들어지기 시작하였고, 아래와 같은 것들이 그 예시다. (PEP8 자세히보기) 함수명은 소문자와 snake_case의 표현을 사용한다. 클래스 명은 camelCase의 표현을 사용한다. 소문자 l(L), 대문자 O, 대문자 I(i)는 가독성을 위해 사용하지 않는다. 코드의 마지막 줄에는 항상 한 줄을 띈다. = 연산자 양 쪽으로 두 칸 이상 띄우지 않는다. 한 줄은 최대 79자까지만 작성한다. 불필요한 공백은 사용하지 않는다. 외의 추가적인 것이 궁금하다면, flake8 공식 문서를 참고하자. 이러한..

1) is와 == 파이썬에서 변수를 할당(정의)한다는 것은 어떤 메모리 공간에 특정 내용을 저장하도록 하는 것이다. '=='은 그 내용끼리 같은지 확인하는 연산자이고, 'is'는 메모리 공간 자체가 같은 곳인지 확인하는 연산자(값만 비교하고자 할 때는 권장되지 않는다.)이다. 따라서 아래와 같은 차이를 확인할 수 있다. ????? ??????????? 파이썬에서는 메모리 효율을 위해 빈번하게 사용되는 -5 ~ 256의 정수의 할당에 대해서는 같은 메모리 공간을 사용하도록 되어 있다고 한다. (고정된 메모리 공간의 사용) 위와 같이 서로 다른 두 변수 a,b를 정의하더라도 -5 ~ 256 범위에서 값이 같다면 같은 메모리 주소를 가리키고, 그 외(ex. 257)에는 그렇지 않다. 무튼 is 연산을 통해 다..

파이썬은 JAVA와 같은 언어처럼 변수의 자료형을 미리 지정하는 것이 아니라, 실행되는 시점에 그 자료형이 결정되는 dynamic typing을 지원한다. 이는 코드를 간결하게 하고 개발자 입장에서 사용이 편리하다는 이점을 주지만, 때로 명확히 지정되지 않은 변수의 자료형으로 인해 코드의 잘못된 사용이 일어날 수 있다. 특히 함수에서 여러 개의 변수가 복잡하게 얽혀 사용되는 경우 각 변수의 자료형이 무엇이며, 함수가 어떤 작용을 하는지에 대해 설명해줄 필요가 있는데 이때 도움을 주는 것이 바로 function type hint와 docstring이다. (PEP484 기반으로 업데이트 _ Python 3.5 이상) 1) type hint 클래스, 함수 등에서 사용되는 일종의 주석으로, 필수는 아니다. 클래..

위에서 정의한 변수를 특정 string 중간에 넣어 출력하거나, 실수를 출력하되 그 자릿수를 소수 셋째자리에서 반올림한 것으로 통일해 출력하는 등 상황에 맞는 format을 사용해 출력하고 싶은 경우 활용할 수 있는 방법은 총 세 가지다. 1) % formatting string의 중간에 %s, %d, %f 등으로 형식을 지정한 뒤, 해당 자리에 들어갈 변수들을 tuple에 지정함으로써 출력하는 방법이다. 지정 가능한 형식은 아래와 같은데, 자주 사용하는 것들만 기억해주면 되겠다. 웬만한 경우는 %s를 사용해 해결할 수 있고, 위 예시처럼 직접 %를 str으로 입력하고 싶은 경우 일종의 escaping으로 %를 하나 더 달아주어야 한다. 특정 formatting이 동일한 길이를 갖게 하고 싶은 경우 위처..
단축키 기능 a 위에 셀 추가 b 아래 셀 추가 dd 선택된 셀 삭제 Ctrl + ] 현재 커서가 있는 라인 오른쪽으로 탭 Ctrl + [ 현재 커서가 있는 라인 왼쪽으로 탭 y 선택한 셀 Code 모드로 변경 m 선택한 셀 Markdown 모드로 변경 Shift + L Toggle line numbers 활성화 Shift + Tab ① (커서가 맨 앞에 있을 때) 현재 커서가 있는 라인 왼쪽으로 탭 ② (커서가 attribute 위치 혹은 함수의 변수 자리에 있을 때) 툴팁 확인하기 Ctrl + / 현재 커서가 있는 라인 (or 현재 드래그한 모든 라인) 주석 처리 Ctrl + Shift + - 현재 커서 위치 기준으로 셀 나누기 Shift + M 선택한 모든 셀 하나로 합치기 Z 셀 지우기 취소 X ..

프로젝트를 진행하다보면 현재 메모리가 임시로 가지고 있는 값 자체를 영구적으로 저장해 놓았다가 다시 재사용해야 하는 경우들이 있다.(주피터 노트북에서 임시로 전처리를 진행중이라든가, 구글 코랩을 활용하는 상황 등등) 그것이 코드 자체라면 문제가 되지 않지만, 코드가 실행되며 발생되는 배열, 사전 등의 객체라든가 특정 전처리가 완료된 데이터에 대해 연산이 진행된 클래스라든가, 하는 경우에는 그것을 따로 저장할 방법이 필요한데 그것이 파이썬에서는 pickle이다. a = list(range(100)) b = [] for x in a: if not x%7: b.append(x) b 위 예시의 경우 실행 시간이 얼마 되지 않아 런타임이 끊기거나 재시작을 하더라도 다시 실행하면 그만이지만, 해당 중간의 결과물을 ..