본문 바로가기

Contact English

【Python】 파이썬 문법

 

파이썬 문법

 

추천글 : 【Python】 파이썬 목차 


1. 개요 [본문]

2. 문법 [본문]

3. 라이브러리 [본문]


a. R 개요


 

1. 개요 [목차]

⑴ 파이썬의 장점 

장점 1. 앱 개발 등에서 백엔드 구현이 용이함

장점 2. 딥러닝 툴이 잘 나와 있음

장점 3. 오픈 커뮤니티를 기반으로 다양한 어플리케이션이 가능

장점 4. 데이터 시각화가 상당히 잘 돼 있음

⑵ 파이썬과 다른 언어의 비교 

 

language open source speed compute time library extent ease of entry costs interoperability
Python Yes 16 62 80 85 10 90
Julia Yes 2941 0.34 100 30 10 90
R Yes 1 745 100 80 15 90
IDL No 67 14.77 50 88 100 20
Matlab No 147 6.8 75 95 100 20
Scala Yes 1428 0.7 50 30 20 40
C Yes 1818 0.55 100 30 10 99
Fortran Yes 1315 0.76 95 25 15 95

Table. 1. 파이썬과 다른 언어의 비교

 

 

2. 문법 [목차]

파이썬은 여러 개의 값을 동시에 return할 수 있음 

%%time : 실행시간 출력

pass 또는 ... : 문법적으로 코드가 필요한 위치에 실제로는 실행할 코드가 없을 때 사용

yield는 값을 한 번에 모두 반환하지 않고, 필요한 시점에 하나씩 반환

 back space \ 를 통해 줄바꿈을 하여 multi-line code를 짤 수 있음

 한 줄 문자열은 "~" 혹은 '~'로 나타내고, 여러 줄 문자열은 """~""" 혹은 '''~'''로 나타냄

 adata.var_names=[i.upper() for i in list(adata.var_names)] 

① 의미 : adata.var_names에는 list(data.var_names)에 있는 각 i를 대문자로 한 것으로 저장

 if issparse(counts.X):counts.X=counts.X.A 

① 의미 : counts.X가 sparse matrix이면 counts.X에 counts.X.A 값을 넣음

pd.DataFrame([(str(i),str(j)) for i in range(4) for j in range(i+1, 4)])

 

	0	1
0	0	1
1	0	2
2	0	3
3	1	2
4	1	3
5	2	3

 

⑽ 행렬 연산 

① NumPy로 정의된 행렬에서 * 및 ** 연산은 각 원소를 곱하는 것에 불과함 : 이 경우 @ 연산자를 써서 행렬의 곱셈임을 표시함

② sympy, Matrix로 정의된 행렬에서 * 및 ** 연산은 행렬의 곱셈 및 제곱을 의미함 

○ 파이썬 numpy 이용

 

import numpy as np

# 두 행렬 정의
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 행렬 출력
print("Matrix A:")
print(A)
print("\nMatrix B:")
print(B)

# 행렬 곱셈
result = np.dot(A, B)
## Alternatively, result = A@B

print("\nNumpy 행렬 곱 결과:")
print(result)

 

○ 파이썬 sympy 이용 

 

from sympy import Matrix, init_printing

# LaTeX 스타일 출력 초기화
init_printing()

# 두 행렬 정의
A = Matrix([[1, 2], [3, 4]])
B = Matrix([[5, 6], [7, 8]])

# 행렬 출력
print("Matrix A:")
display(A)

print("Matrix B:")
display(B)

# 행렬 곱셈
result = A * B

print("Sympy 행렬 곱 결과:")
display(result)

 

 

3. 라이브러리 [목차]

⑴ Numpy

① 다차원 배열(ndarray) 기반으로 빠른 수치 계산(행렬 연산, 벡터 연산)을 지원하는 핵심 라이브러리

브로드캐스팅(broadcasting) 

○ NumPy에서 차원이 맞지 않는 배열 간의 연산을 가능하게 해주는 기능

○ 작은 배열(단, 차원이 1일 것)이 자동으로 확장되어 큰 배열과 같은 형태로 맞춰진 후 연산이 수행

○ 작은 배열을 큰 배열에 맞추기 위해 데이터를 물리적으로 복사하는 것은 아님 

 

# Shape of `exp_log_mu`: (2257, 6)
# Shape of `theta_mn`: (6, 13344)

exp_log_mu_expanded = exp_log_mu[:, :, np.newaxis]   # Shape: (2257, 6, 1)
theta_mn_expanded = theta_mn[np.newaxis, :, :]       # Shape: (1, 6, 13344)    
result = exp_log_mu_expanded * theta_mn_expanded     # Shape: (2257, 6, 13344)

 

⑵ Pandas

① 표 형태 데이터(DataFrame)를 쉽게 다루며, 데이터 정리/전처리(결측치 처리, 필터링, 그룹화)에 강함

⑶ Matplotlib 

① 그래프(선, 막대, 산점도 등)를 그려 데이터 분포나 패턴을 시각화할 때 사용

⑷ Scikit-learn (skimage)

① 분류/회귀/군집 같은 전통적 머신러닝 알고리즘과 평가 도구(교차검증, 성능지표)를 제공

⑸ TensorFlow 

① 딥러닝 모델을 계산 그래프 기반으로 학습/배포할 수 있게 해주며, 대규모 학습과 서비스 배포에 활용됨

② 구글 인공지능 팀이 머신러닝과 딥러닝을 목적으로 개발함

③ 2015년 11월에 공개됨 

⑹ PyTorch

① 동적 계산 그래프 기반으로 구현이 직관적이며, 연구/실험에서 딥러닝 모델을 빠르게 개발하고 학습시키는 데 많이 쓰임

② 페이스북 인공지능 연구팀에서 개발함

③ 2016년에 최초 공개되었으며 2019년 4월에 안정화됨

④ 자연어 처리 등 다양한 분야에 활용됨

⑤ 유연성이 높아 기초·원천기술 연구에 널리 사용됨

⑺ SciPy

① 최적화, 통계, 신호처리 등 고급 수학/과학 계산 기능을 제공하여 모델링이나 분석의 수치 계산에 활용됨

⑻ OpenCV

① 이미지/영상 처리 라이브러리로, 객체 검출 전 단계의 전처리(필터링, 윤곽선, 특징 추출) 등에 사용됨

⑼ NLTK

① 자연어 처리 기초 도구(토큰화, 형태 분석, 코퍼스 처리)를 제공하여 교육/기초 실습에 많이 쓰임

⑽ Transformers (Hugging Face)

① BERT, GPT 같은 사전학습 언어모델을 불러와 분류, 요약, 번역 등 NLP 작업을 쉽게 수행함

⑾ SpaCy

① 빠르고 실무 친화적인 NLP 라이브러리로, 개체명 인식(NER), 품사 태깅, 의존 구문 분석 등을 효율적으로 처리

⑿ Jax

① 파이썬에서 고성능 수치연산/딥러닝을 하게 해주는 라이브러리

② JaxGCRL은 구버전 jaxlib 버전만 지원

③ JAX는 Windows에서 GPU 사용을 지원하지 않음 (ref)

 

입력: 2024.04.30 13:41