Coding 35

[Numpy] 차원 축소 및 확장 (np.expand_dims 와 np.sqeeze)

두 함수는 주로 딥러닝에서 다차원 배열을 다룰 때 사용되, 텐서의 차원을 축소하거나 확대할 때 자주 사용합니다. np.expnad_dims import numpy as np np.expand_dims(data, axis) data : 차원을 추가할 array 또는 tensor입니다. axis : 확장할 축(차원)의 위치. 값은 정수, 리스트 또는 튜플의 형태로 입력할 수 있습니다. 예시1) axis에 정수를 넣어 2차원 배열을 3차원 배열로 확장하는 경우입니다. >>> import numpy as np >>> data = np.arange(12).reshape(3,4) >>> data array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> data1 = ..

Coding/Numpy 2023.12.28

[Python] 가상환경 생성과 삭제, 활성화 및 비활성화(MacOS, Windows)

Window와 MacOS 환경에서 가상환경을 생성하고 활성화 및 비활성화하는 방법에 대해 소개해드리려고 합니다. 가상환경 생성 처음에 가상환경을 생성합니다. MacOS # python3 -m venv ./"생성하려는 가상환경 이름" $ python3 -m venv ./venv Windows # python -m venv "생성하려는 가상환경 이름" >python -m venv venv 가상환경 활성화 가상환경을 활성화합니다. MacOS # source "생성한 가상환경 이름"/bin/activate $ source venv/bin/activate Windows # cd "생성한 가상환경 이름"/Scripts >cd venv/Scripts >activate 가상환경 비활성화 가상환경을 비활성화하는 명령어는..

Coding/Python 2023.12.27

[Numpy] 배열 이어붙이기 (concatenate, vstack, hstack, r_, c_)

np.concatnate numpy.concatenate((a1, a2, ...), axis=0)를 써서 사용합니다. 여기서 axis=0 행이고 axis=1 열입니다. axis=0이면 열에다가 concat axis=1이면 행에다가 concat axis에 대해 매개변수가 없으면 1차원으로 concat합니다. 그림으로 예시를 보여드리겠습니다. 각각 (2,3)의 a와 b의 배열이 있습니다. 두개의 배열에 대해 사용하는 예시를 보여드리겠습니다. 배열 선언 >>> import numpy as np >>> a = np.array([[1,2,3],[4,5,6]]) >>> a array([[1, 2, 3], [4, 5, 6]]) >>> b = np.array([[7,8,9],[10,11,12]]) >>> b array..

Coding/Numpy 2023.12.26

[Numpy] 팬시 색인(fancy indexing)

팬시 색인( fancy indexing)이란? 정수 배열을 사용한 색인을 설명하기 위해 Numpy에서 차용한 단어이다. 팬시 색인은 슬라이싱과 달리 선택된 데이터를 새로운 배열로 복사한다. 값을 가져오는 것이 아닌 값을 복사하는 것이다. 팬시 색인 예시 특정한 순서로 행을 선택하고 싶다면 원하는 순서가 명시된 정수가 담긴 ndarray 또는 list를 매개변수로 입력한다. 1차원 배열로 팬시색인을 하는 경우 >>> import numpy as np >>> arr = np.zeros((8,4)) >>> for i in range(8): ... arr[i] = i >>> arr array([[0., 0., 0., 0.], [1., 1., 1., 1.], [2., 2., 2., 2.], [3., 3., 3.,..

Coding/Numpy 2023.12.22

[Numpy] Numpy 메서드 ( argmin, argmax, cumsum, cumprod)

파이썬의 통계를 위한 메서드 배열 전체 혹은 배열의 한 축에 속하는 자료에서 통계를 계산하는 수학 함수 중 4개를 소개한다. argmax : 최대 원소의 인덱스값 argmin : 최소 원소의 인덱스값 cumsum : 0부터 시작하는 각 원소의 누적 합 cumprod : 1부터 시작하는 각 원소의 누적 곱 4개의 함수는 모두 axis라는 매개변수를 갖는다. (2차원 기준으로 설명) axis = 0 : 행을 의미하며, 계산은 행의 방향대로 진행 aixs = 1 : 열을 의미하며, 계산은 열의 방향대로 진행 np.argmin np.argmax(data, axis(default=0)) : 최대 원소의 인덱스 값 반환 >>> import numpy as np >>> data = np.array([[0,3,5],[..

Coding/Numpy 2023.12.21

[Numpy] Numpy란? (ndarray, ndim, shape)

Numpy란? Numerical Python의 준말인 넘파이$^{Numpy}$는 파이썬에서 산술 연산, 수치해석과 같은 수학 및 과학 연산을 위한 파이썬 패키지이다. 다차원 배열을 쉽고 효율적으로 처리하며 Pandas와 연동하여 자주 사용한다. 핵심 기능은 ndarray라고 하는 N차원의 객체 배열이다. 왜 사용하는가? 파이썬의 기본 라이브러리보다 매우 매우 빠르고 효율적이다, 배열 내부의 원소의 값들을 브로드캐스팅할 때, 파이썬은 반복문을 사용하지만, 넘파이는 한 번에 가능하기에 빠르다. Numpy 설치 $ pip install numpy ndarray, 다차원 배열 객체 생성 가장 기본적으로 생성하는 방법 >>> import numpy as np >>> data =np.array([[1.5, -0.1..

Coding/Numpy 2023.12.20

[Python] for else구문과 while else구문 정리

for-else구문 else구문이 실행된 경우 for구문 내부의 break를 실행되지 않고, for구문이 종료된 경우 else구문을 실행합니다. for i in range(1,5): if i == 5: break print(i) else: print("break 실행되지 않았으며, else가 실행되었음") # 실행결과 # 1 # 2 # 3 # 4 # break 실행되지 않았으며, else가 실행되었음 else구문이 실행되지 않은경우 for구문 내부의 break를 실행되었으며, else구문이 실행되지 않습니다. for i in range(1,5): if i == 3: break print(i) else: print("break 실행되지 않았으며, else가 실행되었음") # 실행결과 # 1 # 2 whil..

Coding/Python 2023.11.30

[Python] round의 사사오입과 오사오입에 대해

결론부터 말하자면 Python의 round함수는 오사오입을 사용한다. 사사오입과 오사오입은 숫자를 반올림하는 두 가지 방법이다. 이들은 소수점 이하의 숫자를 처리할 때 사용되며, 각각의 방식은 두 가지이다. 사사오입(Round Half Up)이란? 5 이상에서 올리고, 5 미만은 버리는 것이 우리가 알고 있는 반올림 방식인 사사오입이며 Round Half Up이라고 한다. 일반적으로 알고 있는 반올림이다. 소수점 0부터 5까지는 파이썬의 floor 함수를 사용하는 것과 같고, 소수점이 5를 초과할 때부터는 파이썬의 ceil 함수와 동일하다. 그림으로 표현하면 다음과 같으며, 프로그램 실행 시 다음과 같이 결과가 나온다. 혹시 코드가 필요한 사람이 있을 수 있으므로 코드도 첨부하겠다. from math i..

Coding/Python 2023.11.26

[Python] sort, sorted 리스트 정렬

Sort() 함수 sort() 함수는 리스트를 오름차순으로 정렬하는 함수이다. (반환 X) 리스트만 사용할 수 있기 때문에 sorted() 함수에 비해서는 덜 편리한 편이다. str_N =['1','7','10','4','5','6','3']#string 형 int_N =[ 1 , 7 , 10 , 4 , 5 , 6 , 3 ]#int 형 int_N.sort() str_N.sort() # 원소의 위치를 오름차순으로 바꾼다. print(int_N) # [ 1 , 3 , 4 , 5 , 6 , 7, 10 ] print(str_N) # ['1','10','3','4','5','6','7'] # 원소들이 int 형이 아닌 string 형이다. # 그러므로 크기가 아닌 사전순으로 정렬된다. Sorted() 함수 그리고..

Coding/Python 2023.11.15

[Python] 2개이 요소를 비교할 때, min()과 max() 함수가 if 문보다 느린 이유가 뭘까?

배경 백준 Floyd-Warshall 문제를 풀다가 시간초과가 발생했다. 시간초과 발생한 것을 보고 게시판을 찾아보면서, 내 코드와 비슷하지만, 정답을 맞은 코드를 보며 알고리즘을 비교했다. 알고리즘에는 차이가 없지만 if 문과 min 함수의 차이가 눈에 띄었다. 그리고 코드를 바꿔 풀어보면서 제목과 같은 의문을 갖게 되었다. 비교 코드 import time if __name__ == '__main__': sim = 10**8 s = time.time() for _ in range(sim): if 1 > 2: pass res1 = time.time()-s s = time.time() for _ in range(sim): max(1, 2) res2 = time.time()-s print('compariso..

Coding/Python 2023.10.17