numpy는 과학 계산을 위한 라이브러리로서 다차원 배열을 처리하는데 필요한 여러 유용한 기능을 제공하고 있다. 공학 프로그램의 대표주자인 매틀랩(MATLAB)과 상당히 유사한 파이썬+numpy를 활용하면 행렬 계산을 하는데 유용하게 사용할 수 있다.
먼저, 파이썬 Spyder에서 numpy 패키지를 불러온다. 대부분의 프로그램들은 numpy를 np로 줄여서 사용하는듯하니, 똑같이 np로 사용하도록 하겠다.
1. 행렬의 연산
import numpy as np
A = [[1,2],[3,4]]
B = [[2,2],[2,2]]
C = [[1],[2]]
D = [[1,2]]
E = [[1,0],[0,1]]
위와 같은 경우, A, B, E는 2x2 사이즈의 리스트, C는 2x1 사이즈의 리스트, 그리고 D는 1x2 사이즈의 리스트가 된다. 리스트형에는 사이즈를 알기 위한 shape 및 형태를 알기 위한 dtype가 적용되지 않기 때문에 numpy 패키지의 array라는 함수를 사용해서 행렬로 바꿔줄 수 있다.
첫번째 줄에서 numpy라는 패키지를 np로 불러온다고 했기 때문에 F1 = numpy.array(A)나 F1 = np.array(A)는 동일한 기능을 갖는다.
F1 = np.array(A)
F2 = np.array(B)
print (F1+F2)
F1과 F2는 각각 2x2 행렬이다.
행렬의 연산에서 print (F1+F2)를 실행하게 되면 결과는 어떻게 될까?
print (F1*F2)
print (F1@F2)
다음은 F1*F2와 F1@F2이다. 행렬을 곱하는 것은 두가지 방법이 있으며, F1*F2의 방식은 각각의 원소끼리 곱하는 dot product라고 한다.
위와 같이 프로그래밍을 한 후에 F5를 눌러서 실행하면 다음과 같이 F1+F2, F1*F2, F1@F2의 값이 출력된다.
2. zeros, ones, eye 함수
파이썬과 함께 사용하는 numpy 패키지는 마치 MATLAB을 사용하는 듯한 느낌을 준다. 그 이유 중 하나는 아마 MATLAB에서 익숙한 zeros, ones, eye 함수 때문이 아닌가 한다. 모든 원소를 0으로 채우는 zeros, 1로 채우는 ones, 그리고 단위 행렬을 만들어주는 eye를 사용해보도록 하자.
import numpy as np
A = np.zeros((2,2))
B = np.ones((2,2))
C = np.eye(2)
print (A)
print (B)
print (C)
F5를 눌러서 실행하게 되면, 0으로 채워진 행렬, 1로 채워진 행렬, 그리고 단위 행렬이 만들어진다.
3. 파이썬 연산자
파이썬 연산자 중에 특이한 점은 거듭제곱 연산자가 아닐까 싶다. 대부분 3의 3승을 구하기 위해서 3^3으로 생각하지만, 3의 3승은 3**3으로 표현하게 된다.
출처: https://mechasolution.net/2017/12/12/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%88%98%EC%B9%98%ED%95%B4%EC%84%9D-2-numpy-zeros-ones-eye-%EC%97%B0%EC%82%B0%EC%9E%90/
최신댓글