일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 고체역학
- teps
- JAX
- 옵시디언
- MATLAB
- 생산성
- 딥러닝
- obsidian
- 우분투
- Julia
- 텝스공부
- Linear algebra
- 수치해석
- Dear abby
- Python
- 논문작성
- Zotero
- 수식삽입
- 논문작성법
- 에러기록
- WOX
- pytorch
- Numerical Analysis
- 인공지능
- LaTeX
- IEEE
- matplotlib
- Statics
- 텝스
- ChatGPT
- Today
- Total
뛰는 놈 위에 나는 공대생
[Python] Numpy 라이브러리 (1) 본문
List가 기본적으로 파이썬에서 제공하는 collection이지만 데이터 분석에 사용하기에는 불편한 점이 있다.
- element 단위로 계산하는 것이 불편하다.
Numpy가 데이터 분석에 적절한 라이브러리가 될 수 있다.
사용하기 쉽고 빠르며, 계산이 전체 array에 적용될 수 있다.
Numpy의 특징
homogeneous collection of "iterms" of the same "data-type" (dtype)
linear algebra 등의 수학적 내용을 적용하기 편리하다.
C, C++, FORTRAN과 잘 호환된다.
ndarray : a fast and space-efficient multidimensional array providing vectorized arithmetic operations and sophisticated broadcasting capabilities
Numpy가 빠른 이유는 array 자체에 data를 담고 있기 때문이다. List는 데이터의 주소를 저장하고 그 주소에 또
데이터가 저장되어있다. 그래서 데이터에 접근하기 위해서는 데이터 주소를 가져오고, 그 주소로 데이터를 가져오는 두 단계를 거쳐야 하기 때문에 numpy보다 느리다.
ndarray에 대한 설명
1. Create ndarrays
list를 만들어서 np.array()안에 넣는 방법
np.zeros, np.ones, np.zeros_like, np.ones_like, np.arange
np.arange는 1차원 array만 출력하기 때문에 reshape를 이용해서 차원을 바꿔줘야한다.
full : np.full((2,3),5) 5로 채워진 (2,3) matrix
eye : np.eye(5) 5 by 5 identity matrix
random : random values로 채워진 array 출력
empty : 0으로 채운 matrix (zeros와 무슨 차이지?)
2. Dimension, shape, data types
(2,3,3) 크기의 array가 있을 때
data.ndim : 3
data.shape : (2,3,3)
data.dtype : dtype('float64')
ndim은 몇 차원인지, shape은 각 차원의 원소 갯수, dtype은 array에 들어간 데이터의 타입
3. Operations between arrays and scalars
vectorization : array는 array의 원소에 대한 operation을 loop없이 수행할 수 있다.
4. Universal Functions(ufunc) : Fast Element-wise Array Functions
element마다 계산을 수행할 수 있도록 numpy에 주어진 function들이 있다.
Unary ufuns : 2개의 array를 input으로 받는 elementwise function
5. Basic Indexing and Slicing
array를 슬라이싱할 때, 그것은 array의 복제본이 아니라 array를 보는 view에 가깝다. 따라서 어떤 array를 슬라이싱해서 다른 변수에 집어넣고, 그 변수를 새로운 값으로 바꾸면 원본 array도 바뀐다.
arr = np.array([1,2,3,4,5])
arr_slice = arr[1:2] # array([2,3])
arr_slice[0] = 1 # arr_slice=array([1,3])
arr # array([1,1,3,4,5])
# copy하고 싶을 때
arr_slice = arr[2:3].copy()
6. Boolean indexing
true, false indexing을 이용해 원하는 값만 골라낼 수 있다.
7. Data Processing Using Arrays
1) Expressing Conditional Logic as Array Operations
np.where함수
vectorized version of the nernary expression z if condition else y
np.where(condition, array)
condition에서 np.array([False True False True True])와 같은 결과이기 때문에
np.cumsum : cumulative sum, sum을 계속 쌓아가면서 더해주는 것
np.sum
np.mean
2) Methods for Boolean Arrays
arr = randn(100)
(arr>0).sum() # 0보다 큰 원소의 갯수 세기
np.where(arr>0, arr, 0).sum() # 0보다 큰 원소를 전부 더하기
3) Sorting
np.sort(array, 0) : axis 0 기준으로 작은 것부터 정렬
np.sort(array, 1) : axis 1 기준으로 작은 것부터 정렬
array.sort(0) 으로 표현할 수도 있다.
np.unique를 이용해 개별적인 값이 무엇이 있는지 알 수 있다.
np.in1d(array, [2,3,6]) 두 번째 입력([2,3,6]) 중에서 array에 있으면 True, 없으면 False return
'프로그래밍 Programming > 파이썬 Python' 카테고리의 다른 글
[Python] 내가 헷갈려서 기록하는 matplotlib의 subplot 그리기 (0) | 2021.04.22 |
---|---|
[Python] Numpy 라이브러리(2) (0) | 2021.03.27 |
[Python] 파이썬 Functions 만들기 (0) | 2021.03.26 |
[Python] 파이썬 control flow (0) | 2021.03.26 |
[Python] 파이썬 datatype (0) | 2021.03.26 |