Numerical Python - Numpy
학습 목표
이번 강의에서는 파이썬의 과학 계산용 패키지인 numpy 의 여러 특징과 기능, 코드를 작성하는 방법 등을 배웁니다.
- numpy
- ndarray
- Handling shape
- Indexing
- Slicing
- Creation function
- Operation functions
- array operations
- Comparisons (이 글 범위)
- Boolean Index
- Fancy Index
- numpy data i/o
강의 영상
Numerial Python - numpy
Data handling section
https://blog.naver.com/boostcamp_official/222345119688
https://www.boostcourse.org/ai100/lecture/739178?isDesc=false
array operations
1. operations b/t arrays
2. element wise operations
3. dot product
4. transpose
5. boradcasting
6. numpy performance #1 #2
Operations b/t arrays
- Numpy는 array간의 기본적인 사칙 연산을 지원함
더하기
빼기
곱셈 나누기
같은 위치 값들끼리 연산한다.
Element-wise operations
- Array간 shape이 같을 때 일어나는 연산
마찬가지로 같은 위치끼리 연산한다
Dot product
- Matrix의 기본 연산
- dot 함수 사용
dot을 쓰면
1*7 + 2*9 + 3*11 = 58
58이 나온다
matrix는 이렇게 연산한다
https://www.mathsisfun.com/algebra/matrix-multiplying.html
transpose
- transpose 또는 T attribute 사용
전치행렬 선형대수학에서, 전치 행렬은 행과 열을 교환하여 얻는 행렬이다.
즉, 주대각선을 축으로 하는 반사 대칭을 가하여 얻는 행렬이다.
요로케
broadcasting
- Shape이 다른 배열 간 연산을 지원하는 기능
모두에게 동일한 연산 적용! (메시지 브로드캐스팅같네)
scalar-vetor 외에도 vector-matrix 간의 연산도 지원 한다
중요중요
Numpy performance #1
def sclar_vector_product(scalar, vector):
result = []
for value in vector:
result.append(scalar * value)
return result
iternation_max = 100000000
vector = list(range(iternation_max))
scalar = 2
%timeit sclar_vector_product(scalar, vector) # for loop을 이용한 성능
%timeit [scalar * value for value in range(iternation_max)] # list comprehension을 이용한 성능
%timeit np.arange(iternation_max) * scalar # numpy를 이용한 성능
- timeit: jupyter 환경에서 코드의 퍼포먼스를 체크하는 함수
Numpy performance #2
- 일반적으로 속도는 아래 순
for loop < list comprehension < numpy
- 100,000,000 번의 loop이 돌 때 약 약 4배 이상의 성능 차이를 보임
- Numpy는 C로 구현되어 있어, 성능을 확보하는 대신
- 파이썬의 가장 큰 특징인 dynamic typing을 포기함
- 대용량 계산에서는 가장 흔히 사용됨
- Concatenate 처럼 계산이 아닌, 할당에서는 연산 속도의 이점이 없음
comparisons
1. all & any
All & Any
- Array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환
any à 하나라도 조건에 만족한다면 true
all à 모두가 조건에 만족한다면 true
Comparison operation #1
- Numpy는 배열의 크기가 동일 할 때
element간 비교의 결과를 Boolean type으로 반환하여 돌려줌
any à 하나라도 true라면 true
Comparison operation #2
np.logical_and(a>0, a<3) # and 조건의 condition
array([True,False,False], dtype=bool)
np.logical_not(b) #NOT 조건의 condition
array([False, True, False], dtype=bool)
np.logical_or(b, c) # OR 조건의 condition
array([True,True,True], dtype = bool)
np.where
# where (condition, TRUE, FALSE)
np.where(a>5)
Index 값 반환
np.isnan(a)
Not a Number
np.isfinite(a)
is finite number
argmax & argmin
- array내 최대값 또는 최소값의 index를 반환함
- axis 기반의 반환
'머신러닝,딥러닝 > numpy 강의&프리코스' 카테고리의 다른 글
pandas 판다스 dataframe에서 원하는 칼럼만 사용하기 (0) | 2022.08.20 |
---|---|
week_0 pandas 작업하면서 참고한 사이트 (0) | 2022.07.18 |
week_0 pandas 공부하면서 해결한 문제 몇 가지 (0) | 2022.07.18 |
starting conda & jupyter notebook on mac (0) | 2021.12.07 |
numpy 필기 끝 8. boolean 9. fancy index 10. data i/o (0) | 2021.06.14 |
numpy 필기 6. creation 7. operation functions (0) | 2021.06.14 |
numpy 공부 필기 3. handling space 4. index 5. slice (0) | 2021.06.14 |
numpy 공부 필기 1. numpy 2. ndarray (0) | 2021.06.14 |