>  기사  >  백엔드 개발  >  numpy 모듈을 기반으로 대칭 행렬을 생성하는 Python 방법

numpy 모듈을 기반으로 대칭 행렬을 생성하는 Python 방법

黄舟
黄舟원래의
2017-10-12 10:55:515209검색

이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.