이 글은 주로 Python에서 대칭행렬을 생성하는 방법을 소개하고, numpy 모듈을 기반으로 Python의 관련 조작 기술을 분석하여 행렬 연산을 예제 형식으로 구현한 내용입니다. 필요하신 분들은 참고하시면 됩니다
본 내용은 기사에서는 Python에서 대칭 행렬을 만드는 방법을 설명합니다. 참조를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
대칭(실제 대칭) 행렬은 다음과 같습니다.
1단계: 정사각형 행렬 만들기
>>> import numpy as np >>> X = np.random.rand(5**2).reshape(5, 5) >>> X array([[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708], [ 0.31837673, 0.35493156, 0.74336268, 0.31810561, 0.04409245], [ 0.06644445, 0.8967897 , 0.10990936, 0.05036292, 0.72581982], [ 0.94758512, 0.21375975, 0.36781736, 0.1633904 , 0.36070709], [ 0.53263787, 0.18380491, 0.0225521 , 0.91239367, 0.75521585]])
2단계: 유지 위쪽 삼각형 부분
>>> X = np.triu(X) # 保留其上三角部分 >>> X array([[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708], [ 0. , 0.35493156, 0.74336268, 0.31810561, 0.04409245], [ 0. , 0. , 0.10990936, 0.05036292, 0.72581982], [ 0. , 0. , 0. , 0.1633904 , 0.36070709], [ 0. , 0. , 0. , 0. , 0.75521585]])
3단계: 위쪽 삼각형을 아래쪽 삼각형 부분에 "복사"
>>> X += X.T - np.diag(X.diagonal()) >>> X array([[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708], [ 0.25408384, 0.35493156, 0.74336268, 0.31810561, 0.04409245], [ 0.12428487, 0.74336268, 0.10990936, 0.05036292, 0.72581982], [ 0.0194565 , 0.31810561, 0.05036292, 0.1633904 , 0.36070709], [ 0.91287708, 0.04409245, 0.72581982, 0.36070709, 0.75521585]])
대각선의 요소를 한 번 빼야 한다는 점에 유의하세요. 상부 삼각형cov
,和下三角cov.T
은 추가 시 주 대각선의 요소를 두 번 추가하기 때문입니다.
4단계: 테스트
>>> X.T == X array([[ True, True, True, True, True], [ True, True, True, True, True], [ True, True, True, True, True], [ True, True, True, True, True], [ True, True, True, True, True]], dtype=bool)
위 내용은 numpy 모듈을 기반으로 대칭 행렬을 생성하는 Python 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!