## 차원, 축 개념
The NumPy ndarray class is used to represent both matrices and vectors. A vector is an array with a single dimension (there’s no difference between row and column vectors), while a matrix refers to an array with two dimensions. For 3-D or higher dimensional arrays, the term tensor is also commonly used.
The number of dimensions and items in an array is defined by its shape. The shape of an array is a tuple of non-negative integers that specify the sizes of each dimension.
dimensions are called axes.
axis의 존재와 크기는 [ ]의 개수로 파악가능하다.
[1,2,3] axis 1개 존재, 크기는 3
[[1,2,3],[1,2,3]] axis 2개 존재, 크기는 axis-1은 2, axis-2는 3
[ [ [1,2,3],[1,2,3] ],
[ [1,2,3],[1,2,3] ],
[ [1,2,3],[1,2,3] ] ] axis 3개 존재, 크기는 axis-1은 3, axis-2는 2, axis-3은 3
axis의 개수가 차원수
각 axis의 item수가 차원의 크기
배열의 전체크기가 모든 차원의 전체 크기
axis=0이 row vector 조절
axis=1이 col vector 조절
axis>1부터는 상상속에서...
## slicing, flip
https://numpy.org/devdocs/user/absolute_beginners.html
## clip
Given an interval, values outside the interval are clipped to the interval edges
np.clip(array, min, max, out)
* out = output object
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
1. np.clip(array, 1, 8)
array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8])
2. np.clip(array, 8, 1)
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
min이라고 하지만, max(min edge, current value)임
max도 마찬가지, min(max edge, current value)임
https://numpy.org/doc/stable/reference/generated/numpy.clip.html
## broadcasting
그냥 모든 elements에 scalar 곱하는 거
## dot 과 matmul의 차이
- 곱의 결과가 다름 ; dot은 차원축소, matmul은 차원유지
- 결국 둘다 곱셈이기 때문에 각 행렬의 마지막 2개 차원에 대한 2차원 행렬 곱셈으로 생각해야 함. 즉 좌측 행렬의 열벡터크기와 우측 행렬의 행벡터의 크기가 같아야 함.
- 다만, dot은 내적 곱이라서 차원축소가 일어나서 상관없지만, matmul은 차원변경만 되는 거라, 마지막 2개차원을 제외한 차원 중 "끝벡터" 크기가 같아야 함
https://blog.naver.com/cjh226/221356884894