Category | boostcamp/AI tech prep |
---|---|
Tag | python |
날짜 | |
발행 여부 |
Inspired
Overview
이번 강의에서는 파이썬의 과학 계산용 패키지인 numpy 의 여러 특징과 기능, 코드를 작성하는 방법 등을 배웁니다.
- numpy
- ndarray
- Handling shape
- Indexing
- Slicing
- Creation function
- Operation functions
- array operations
- Comparisons
- Boolean Index
- Fancy Index
- numpy data i/o
Numpy
- 반복문 없이 배열에 대한 처리
- 빠름.
- C 와 포트란 같은 언어들과 호환 가능
import numpy as np
- 하나의 데이터 type 만 배열에 넣을 수 있다.
- 즉, dynamic typing 을 할 수 없다.
- 빠른 속도 가능케 함.
- C 처럼 배열이 일렬로 데이터 구조 상에 늘어져있다.
- 즉, dynamic typing 을 할 수 없다.
python 에서, copy.deepcopy
로 완전한 복제가 가능함.
Reshape
np.array(test_matrix).reshape(-1,2).shape
-1
은 변수라고 볼 수 있다.
test_matrix
의 크기가 총 100이라면, column 수가 2로 reshape 하기로 했으므로 row 는 50이 될 것이다.
Flatten
- 다차원의 array 를 1차원 array 로 변환한다.
reshape
을 쓰는 것과 동일하지만, 더 특화된 방식이다.
실제 코드를 작성할 때 혹은 흐름을 따라갈 때, matrix 의 shape 을 따라가는 경우가 매우 많을 것이다.
Indexing
[0][0]
과 같은 [0,0]
을 제공한다.
Slicing
Functions
arange
range
와 같은 함수이다.
- array 의 범위를 지정하여, 값의 list 를 생성하는 명령어
- 1차원으로 생성해주는데, 2차원으로 만들고 싶다면,
reshape
을 하면 된다.
- 1차원으로 생성해주는데, 2차원으로 만들고 싶다면,
.tolist()
로 list 화 할 수 있다.
ones, zeros, empty
ones
나 zeros
를 많이 쓴다.
something_like
생각보다 deeplearning 때 많이 쓴다. numpy 의 데이터를 미분가능하게 한게 텐서플로우여서, 텐서플로우에 numpy 의 함수들이 많다.
Identity, eye, diag, random sampling
Operation Functions
axis
축(axis)
자체가 매우 중요하다.
test_array = np.arange(1,13).reshape(3,4)
test_array.sum(axis=1), test_array.sum(axis=0)
sum
을axis
에 따라서 다르게 더할 수 있다.
- 어떤 array 의 shape 이 (5,6,7) 이라고 생각하면
- axis=0 은 5를 기준으로
- axis=1 은 6을 기준으로
- axis=2 는 7을 기준으로
- 하는 것이다.
새로 생기는 축. 즉, 가장 고차원의 축이axis=0
이 된다. 그 이후의 차원이axis=1
...
mean, std, Mathmetical functions...
일단 알아만두자.
Concat
np.vstack
: vertical. 수직 합성
np.hstack
: horizontal. 수평 합성
np.concat
:axis
설정에 따라서,vstack
과hstack
을 둘 다 수행할 수 있다.
이러한 tensor 들을 붙이는 것들은 상당히 자주 쓴다.
Operations b/t arrays
element wise
는 같은 위치에 있는 값들끼리 연산해주는 것이다.- array 간의
shape
이 같아야 이루어진다.
- array 간의
.dot()
은 실제 행렬간의 곱셈을 말한다.
transpose()
- 가장 중요한
broadcasting
- shape 이 다른 배열 간 연산을 지원해주는 기능이다.
- scalar - vector 간의 연산
- vector - matrix 간의 연산도 지원한다.
Comparisons
All, Any
np.all(조건)
: 조건이 모두 만족하면 True, 아니면 False
np.any(조건)
: 조건이 하나라도 만족하면 True, 아니면 False
.logical_and()
.logical_or()
- 이 두 개는 별로 안 중요하다.
np.where
np.where(조건)
- 조건에 맞는 인덱스를 반환해준다.
np.where(조건, true 일 때 반환 값, false 일 때 반환 값)
np.where 이랑 정렬을 같이 쓰면..
np.NaN np.Inf np.isfinite
argmax, argmin
np.argmax
np.argmin
- 각 최대 최소의 index 를 찾아준다.
axis
를 설정하여 각 축의 최소 최대를 반환해준다.
모든 것을 외울 수는 없으니, 필요할 때 검색해서 쓰자.
boolean index
where
로 index 를 가져왔다면, boolean index 로 필요한 것만을 가져올 수 있다.
fancy ind
- int 로 선언한 array 를 index value 로 사용해서 다른 array 의 값을 추출하는 방법
- boolean index 와 비슷하지만 사용 방법이 다르다.
추천 시스템 쪽을 공부하면 이런 기법들을 상당히 많이 사용한다.
take
를 사용하는 것이 더 명확하다.
반응형
'boostcamp > AI tech prep' 카테고리의 다른 글
Pandas (2 장 완료해야함) (0) | 2021.12.12 |
---|---|
Module and Project (0) | 2021.11.14 |
Pythonic Code (0) | 2021.11.09 |