본문 바로가기

CS/Python

(21)
Flask Music Recommendation System based on user data #1 프로세스 추후 업로드 예정
sort (select/bubble/quick/merge/radix) Python에서 sort(), sorted() 함수로 사용 가능 @선택 정렬(selection sort) -앞에서부터 최소값과 최대값의 인덱스 저장해가며 정렬 -O(N) ->교환이 많이 이루어져야 하는 자료 상태에서 효율적 역순 정렬에 가장 적합(내림차순 정렬되어 있는 자료를 오름차순으로 정렬) -이미 정렬된 상태에서 소수의 자료가 추가됨으로 재정렬하게 될 때는 최악 @버블 정렬(bubble sort) -거품처럼 앞 원소 뒤 원소 비교해가며 정렬 -O(N) @퀵 정렬(quick sort) -원소 하나 고르고 그것보다 작은 건 그 원소 기준 왼쪽으로, 그것보다 큰 건 오른쪽으로 -최악의 경우 O(N)이 되기 때문에 최악을 피하려고 함 -보통 O(NlogN)이라고 생각하면 됨(빠른 편) -내부메모리만 사용...
코테 응용하기 좋은 수학 알고리즘 @수학 -포함-배제 등 중고등 수학 응용 -초보가 PS에 들어와서 당황하는 부분 -수식으로 표현할 수 없을까? 숫자로 구성된 문자열을 N진법에 맞게 변환하기 위해서는? 큰 수 연산할 때는 미리 중간중간 나눠주는 게 더 빠름 알면 풀고 모르면 못 푸는 문제들이 있음 @최대공약수 -공통적인 약수 중 최댓값 -최대공약수가 1이면 서로소 @최대공배수 -공통된 배수 중 최솟값 LCM(A,B) = A x B|GCD(A,B) GCD만 잘 구하면 LCM은 O(1)에 구할 수 있음 # Check from 1 def gcd(a,b): ret = 0 for i in range(min(a,b)): if a % i == 0 and b % i == 0 : ret = i return ret # Check from min(a,b) ..
Read & Analysis | 시간복잡도, 공간복잡도 등 @Read & Analysis -문제를 읽을 때, 어떤 부분을 초점을 두고 읽어야 할까? -문제의 조건들을 추상화하는 연습 -시간복잡도, 공간복잡도 어림잡기 @가장 먼저 체크할 것 -시간 제한(안 써있으면 질문) -메모리 제한 -입력 범위 @시간복잡도 -어떤 코드의 실행 시간이 오래 걸릴까? -> 연산이 많은 코드 -계산량은 어떤 값과 상관 있을까? -> 입력 -연산에 따라 속도가 다름 -모든 연산을 다 카운팅할 수 없음 -최악의 경우와 최선의 경우? -> 알고리즘에 따라 다름 -카운팅에 따라 실행시간도 다름 -> 서버와 컴퓨터의 속도 차 등 => 대충 계산하자! (접근적 표기법) Big-O Notation log가 붙으면 절반이나 뭐 그렇게 균등하게 쪼개 볼 때 많이 사용한다고 보면 됨 @시간 | 공간..
Pandas | Selection, index Change, Reindex, Data drop @Selection With Column names import pandas as pd import numpy as np df = pd.read_excel("./data/excel-comp-data.xlsx") df.head() @Data selction with index number and column names -한 개의 column 선택시 df["account"].head(2) 0 211829 1 320563 Name: account, dtype: int64 -한 개 이상의 column 선택시 df[["account", "street", "state"]].head(3) 하나의 시리즈나 데이터프레임 데이터를 가져올 때는 2D로 안해주고 str값만 넣어주면 되지만, 여러 개의 컬럼을 가져올 때는 반드..
Pandas @Pandas -구조화된 데이터의 처리를 지원하는 Python 라이브러리 -Python계의 엑셀 -고성능 Array 계산 라이브러리인 Numpy와 통합하여 강력한 스프레드시트 처리 기능 제공 -인덱싱, 연산용 함수, 전처리 함수 등을 제공 @Pandas의 구성 Series -DataFrame 중 하나의 Column에 해당하는 데이터의 모음 Object (Column 뿐만 아니라 Row도 가져올 수 있음) Series list_data = [5, 6, 7, 8, 9] ex_obj = Series(data = list_data) print(ex_obj) Series(index = list_name) 이런 식으로 index 이름도 지정 가능 index 값도 핸들링 가능 -data index에 접근 ex_obj..
Numpy data i/o Example of Numpy data i/o import numpy as np # load txt txt = np.loadtxt("./populations.txt") txt[:10] # Convert the imported txt to int type and load up to the 3rd index txt_int = txt.astype(int) txt_int[:3] # save txt np.savetxt('int_data.csv', txt_int, delimiter=",") numpy object - npy import numpy as np np.save("npy_test", arr=txt_int) # Load up to the 3rd index of the file npy_array = np.lo..
Numerical Python - Numpy(3) @Numpy performance -일반적 속도 numpy > list comprehension > for loop -100,000,000번의 loop가 돌 때 약 4배 이상의 성능 차이를 보임 -Numpy는 C로 구현되어 있어, 성능을 확보하는 대신 파이썬의 가장 큰 특징인 Dynamic typing을 포기함 -대용량 계산에서는 가장 흔히 사용됨 -but, concatenate 처럼 계산이 아닌, 할당에서는 연산 속도의 이점이 없으므로 list comprehension을 사용한 후 numpy로 바꿔주는 게 좋음 Using for loop def sclar_vector_product(scalar, vector): result = [] for value in vector: result.append(scal..

Tiny Star