1. 벡터& 행렬 선언 ( shape, ndim )
Numpy 라이브러리를 이용하여 1차원 배열인 벡터(Vector)와 2차원 배열인 행렬(Matrix)를 선언할 수 있다.
선언한 벡터와 행렬은 shape 메소드를 이용하여 형태를 확인할 수 있고 ,
ndim 메소드를 이용하여 차원을 확인할 수 있다.
import numpy as np
Vector_ex = np.array([1,2,3]) // 1, 의 벡터
Matrix_ex = np.array([[1,2,3],[4,5,6]]) // 2x3 행렬
print("A==",A,"B ==",B)
print("Vector_ex shape ==",Vector_ex.shape,"Matrix_ex shape ==",Matrix_ex.shape)
print("Vector_ex dimension ==",A.ndim,"Matrix_ex dimension ==",B.ndim)
2. 넘파이를 이용한 행렬 형변환 (reshape)
reshape 메소드는 numpy 행렬의 형 변환을 돕는다,
아래는 벡터를 행렬로 바꾸는 코드다
import numpy as np
vec = np.array([1, 2, 3]) # 벡터의 형상을 띄었지만
print("vec.shape ==", vec.shape)
print(vec)
mat = vec.reshape(1,3)
print("mat.shape ==", mat.shape)
print(mat) #reshape를 통해 1x3 형상의 행렬로 바뀌었음
결과는 아래와 같다
vec.shape == (3,)
[1 2 3]
mat.shape == (1, 3)
[[1 2 3]]
다음은 행렬을 다른 행렬로 바꾸는 코드다
import numpy as np
mat1 = np.array([[1, 2, 3],[4,5,6]]) # 2x3의 형상을 띄었지만
print("mat1.shape ==", mat1.shape)
print(mat1)
mat2 = mat1.reshape(3,2)
print("mat2.shape ==", mat2.shape)
print(mat2) #reshape를 통해 3x2 형상의 행렬로 바뀌었음
결과는 다음과같다
mat1.shape == (2, 3)
[[1 2 3]
[4 5 6]]
mat2.shape == (3, 2)
[[1 2]
[3 4]
[5 6]]
번외) reshape(-1, ...) 이 의미하는것은?
reshape에서 마이너스일 ,즉 reshape(-1, x ) 형시으로 사용될 때에는 x에 맞춰서 행을 결정하겠다는 것이다.
따라서 x는 전체 원소 갯수의 약수가 되어야 하며 이외의 숫자 사용시 error가 뜨게 된다.
A = np.array([[1,2,3,4],
[10,20,30,40],
[100,200,300,400]])
B = A.reshape(-1,3) //3외의 7,9 등의 숫자가 나오면 에러가 뜬다
print('B.shape=', B.shape)
print(B)
B.shape= (4, 3)
[[ 1 2 3]
[ 4 10 20]
[ 30 40 100]
[200 300 400]]
참고문헌: 머신러닝을 위한 파이썬 한 조각 / 박성호 저 / 2020년 02월
'AI' 카테고리의 다른 글
[AI/논문리뷰] Continual Learning with Deep Generative Replay / 평생학습과 DGR (0) | 2022.03.23 |
---|