파이썬 문법
추천글 : 【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
'▶ 자연과학 > ▷ Python' 카테고리의 다른 글
| 【Python】 CUDA 및 tensorflow-gpu를 통해 딥러닝을 위한 GPU 환경 구축하기 (0) | 2022.01.26 |
|---|---|
| 【Python】 파이썬 주요 트러블슈팅 [01-20] (0) | 2021.12.01 |
| 【Python】 파이썬 유용 함수 모음 (0) | 2020.03.24 |
| 【Python】 'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. (6) | 2019.04.20 |
| 【Python】 파이썬 기초 코드 (0) | 2018.06.09 |
최근댓글