반응형
※ numpy.array can contain a homogeneous data type ( vs. list and tuple )
선형대수학(linear algebra) 지식이 요구된다.
▷ 배열 생성 기초
- 파이썬은 배열을 0부터 계산하기 때문에 1행 3열을 가져오고 싶으면 [0][2]를 가져와야 함
- 범위를 넘어서는 값을 가져오면 당연히 오류가 난다.
import numpy as np
array1 = np.array([[1, -1, 2],
[3, 2, 2],
[4, 1, 3],
[7, 5, 6]])
array2 = np.random.rand(3, 5) # 3 * 5 행렬 생성
array3 = np.zeros((2, 4)) # 2 * 4 행렬 생성, 괄호 한번 더 치는거 주의!
# indexing
print(array1[0][2])
▷ 행렬의 연산
- 행렬의 곱셈이 추가된 것 이외에는 1차원 배열의 연산과 거의 동일하다 (+, -, *, /, ...)
- +, -, *, /, ... : 요소들 간의 합, 차, 곱, 나눗셈
- 행렬의 곱셈에는 dot, matmul 두 가지가 존재한다.
- 지금 단계에서는 dot과 matmul의 차이가 이해가 되지 않으니, 일단 matmul을 행렬의 곱셈에서 사용하는 것으로 하겠다. (python 3.5 이후부터는 matmul == @ 로 표현한다)
※ matmul vs dot
▷ 전치 행렬 ( transposed matrix ), 단위 행렬 ( Identity matrix ) , 역행렬 ( inverse matrix )
역행렬은 n * n matrix (square matrix) 에서만 정의되는 것을 주의하자.
import numpy as np
A = np.array([
[1, -1, 2],
[3, 2, 2],
[1, 4, 3]
])
# 두 가지 방법
A_transpose = np.transpose(A)
A_transpose2 = A.T
I = np.identity(3)
A_inverse = np.linalg.pinv(A)
※ linalg.inv vs linalg.pinv
pinv()
- It is used to handle Singular as well as Non-Singular Matrices, it refers to the pseudo-inverse of a matrix.
- The pinv() function involves the use of floating-point arithmetic.
inv()
- It is used to handle Non-Singular Matrices, it refers to inverse of a matrix.
- The inv() function doesn’t involve use of floating-point arithmetic.
참고 : https://www.geeksforgeeks.org/differenece-between-inv-and-pinv-functions-in-matlab/
※ numpy.arange vs numpy.linspace
numpy.arange
- arange([start,] stop[, step])
- Excludes the maximum value unless rounding error makes it do otherwise.
numpy.linspace
- arange([start,] stop[, num])
- Returns num evenly spaced samples, calculated over the interval [start, stop].
- The endpoint of the interval can optionally be excluded.
import numpy as np
viz_range = np.array([-6, 12])
xs = np.arange(*viz_range, 20)
print(xs)
#result
[-6]
viz_range = np.array([-6, 12])
xs = np.linspace(*viz_range, 20)
print(xs)
# result
[-6. -5.05263158 -4.10526316 -3.15789474 -2.21052632 -1.26315789
-0.31578947 0.63157895 1.57894737 2.52631579 3.47368421 4.42105263
5.36842105 6.31578947 7.26315789 8.21052632 9.15789474 10.10526316
11.05263158 12. ]
▷ vstack, hstack
vstack : 배열을 세로로 결합할 때 사용한다.
hstack : 배열을 가로로 결합할 때 사용한다.
▷ 정규분포, 균등분포 관련 함수
▷ numpy.random.randint
- random.randint(low, high=None, size=None, dtype=int)
- Return random integers from low (inclusive) to high (exclusive).
- [low, high) : (주의) high 포함 안함
반응형
'python library' 카테고리의 다른 글
Pandas (0) | 2021.11.19 |
---|---|
Jupyter Notebook 기본 (0) | 2021.11.18 |
기본 지도 학습 알고리즘 : 선형 회귀(Linear Regression) (0) | 2021.11.04 |
numpy 기초(1차원 배열) (0) | 2021.10.28 |