biotechknowledge

[파이썬을 활용한 선형대수학] 행렬 및 벡터 표현과 입출력, 넘파이 행렬 생성 매서드 본문

IT.DT

[파이썬을 활용한 선형대수학] 행렬 및 벡터 표현과 입출력, 넘파이 행렬 생성 매서드

준2준2 2024. 12. 17. 00:06

 

행렬 및 벡터 표현과 입출력 방법

넘파이의 데이터타입은 실수를 표시하기 위한 float64 와 복소수를 표기할 수 있는 complex128 이 있다. np.array를 생성할 때, 명시적으로 지정하지 않으면 파이썬 에서 알아서 지정해주고, 데이터타입이 다른 array 의 곱이나 합을 하는 경우에도 지정된 룰에 따라서 dtype이 정해지게 되어있다. 예를들어, float64 인  와 complex인 array를 더한 새로운 array의 데이터타입은 complex가 된다. 모든 엔트리는 같은 dtype을 지녔다. 명시적으로 dtype을 써주는 습관을 갖는 것이 좋다.

 

행렬 및 벡터 모양 확인 메서드 : shape

array 의 데이터 타입 변환 메서드 : astype

 

practice1

 

a = [
    [1-1j,2+1j,1,-3,6,-5],
    [2-1j,1-1j,7,-2,-9,0],
    [2,4,1+1j,-1,5,1],
    [3,1,0,0,0,-14]
]

np.savetxt('out_pr1.txt',a, delimiter=',' ,fmt='%0.1e',dtype=np.complex128)

 

넘파이에서 허수는 i 대신 j 를 사용한다. 복소수는 실수부 + 허수부로 표현한다.

 

np.savetxt : 행렬 혹은 벡터 텍스트 파일로 출력

np.genfromtxt : text file 로부터 행렬 불러오기

    - floating 포맷, 소수점  4자리 123.4567 : "%0.4f" 

    - scientific 포맷, 소수점 2자리 1.23e2 : "%0.2e"

 

practice2

 

b = np.genfromtxt('pr2_inp1.txt',delimiter=' ',dtype=np.float64)
b.shape
np.savetxt('output2.txt',b,delimiter=' ', fmt='%0.3e' )

 

넘파이에서 1,2,3 이 저장된 text 를 genfromtxt 로 불러오면 1d array 형태인 (3,) 형태로 가져온다.

 

행렬 관련 편리한 기능

eye / identity 

 

tri

 

zeros / ones / full : shape 튜플 자료형을 받는다.

 

np.ramdom.rand : 자료형을 튜플로 받지 않는다, 0~1사이 무작위값으로 채워진다, dtype을 지정해 줄 수 없다.


practice3

a = np.identity(20,dtype=np.float64)
np.savetxt('savea', a, fmt='%0.1f')

 

practice4

a = np.random.rand(3,3)
matrix = 1j * a 
print(matrix)

 

  • 실수와 허수의 곱은 허수부만 존재하는 복소수를 만든다. 예시 : 3×4j=(3×4)j=12j