대칭적인 주소 지정 (즉, 행렬 [2,3]과 행렬 [3,2]가 동일한 값을 반환하는)의 2 차원 행렬을 파이썬에서 작성하려고합니다. 정수는 덧셈과 뺄셈을 수행하고 논리적 비교에 사용됩니다. 필자의 초기 아이디어는 앞에 정수 객체를 생성하고 포인터 목록과 비슷한 파이썬 목록을 채우는 것이 었습니다. 그래도 어떻게해야할지 모르겠다. 이것을 구현하는 가장 좋은 방법은 무엇이며 목록이나 다른 데이터 구조를 사용해야합니까?대칭 적으로 주소를 지정할 수있는 행렬
1
A
답변
1
간단하고 깨끗한 방법은 정렬 된 튜플이 포함 된 사전을 키로 사용하는 것입니다. 튜플은 매트릭스 인덱스와 일치합니다. __getitem__
및 __setitem__
을 재정 의하여 정렬 된 튜플별로 사전에 액세스합니다.
class Matrix(dict):
def __getitem__(self, index):
return super(Matrix, self).__getitem__(tuple(sorted(index)))
def __setitem__(self, index, value):
return super(Matrix, self).__setitem__(tuple(sorted(index)), value)
그리고 다음과 같이 사용 : 예를 들면 다음과 같습니다 클래스의 수학적
>>> matrix = Matrix()
>>> matrix[2,3] = 1066
>>> print matrix
{(2, 3): 1066}
>>> matrix[2,3]
1066
>>> matrix[3,2]
1066
>>> matrix[1,1]
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "z.py", line 3, in __getitem__
return super(Matrix, self).__getitem__(tuple(sorted(index)))
KeyError: (1, 1)
1
매트릭스의 아래쪽 삼각형 만 저장하면됩니다. 일반적으로 이것은 하나의 n (n + 1)/2 길이 목록으로 수행됩니다. 항목 의미를 해석하려면 __getitem__
메소드를 오버로드해야합니다.
3
Golub과 밴 대출의는 "매트릭스 계산은"책은 가능한 주소 체계 설명 :
a_ij = A.vec((j-1)n - j(j-1)/2 + i)
2
당신에게 다음과 같이
당신은 내가> = J 가정, 벡터 등의 데이터를 팩 및 액세스를 아마도 정사각형 전체 행렬을 사용하는 것이 좋습니다. 예, 중복 값을 저장하는 메모리의 절반을 낭비하지만 파이썬에서 자신의 대칭 행렬을 굴리면 정수를 파이썬 객체로 저장하고 처리함으로써 더 많은 메모리와 CPU를 낭비하게됩니다.
관련 문제
- 1. numpy의 대칭 행렬?
- 2. 단어로 주소를 지정할 수있는 주소와 바이트로 주소를 지정할 수있는 주소의 차이
- 3. 대칭 (생산) 대칭?
- 4. Numpy 'smart'대칭 행렬
- 5. Google Maps API : 주소 부분을 명시 적으로 지정할 수 있습니까?
- 6. 3D 대칭 검색 알고리즘
- 7. SQL Server에서 대칭 차이를 구현합니까?
- 8. 행렬 함수로 행렬
- 9. 대칭 이미지를 생성하기위한 알고리즘
- 10. 사용자가 차원을 지정할 수있는 배열을 어떻게 선언합니까?
- 11. TextMate에서 텍스트 서식을 다시 지정할 수있는 방법
- 12. svn에서 삭제 권한을 지정할 수있는 방법이 있습니까?
- 13. FROM을 지정할 수있는 SMS API는 무엇입니까?
- 14. sqlite에서 nvarchar에 지정할 수있는 최대 크기는 무엇입니까?
- 15. 생성자의 템플릿 매개 변수를 명시 적으로 지정할 수 있습니까?
- 16. Python의 행렬 및 역 행렬
- 17. 대칭 알고리즘 예외
- 18. 대칭 ds 문제
- 19. 대칭 수 여기
- 20. 대칭 암호화 : 성능 질문
- 21. WPF FlowDocument 대칭 레이아웃
- 22. 대칭 텍스트 스크램블
- 23. 자바 프로그램이들을 수있는 인터넷 주소를 알아내는 방법
- 24. 신뢰할 수있는 프록시 주소를 반환하는 웹 서비스
- 25. 행렬 - 행렬 곱셈/행렬 - 벡터 곱셈 알고리즘의 다른 유형은 무엇입니까
- 26. 다른 행렬 당 행렬 Repmat 행 - MATLAB
- 27. 행렬 열 이름으로 행렬 열 값 추출
- 28. 행렬 함수를 행렬 목록에 적용하는 방법
- 29. SQL Server 2008의 대칭 암호화
- 30. 채워진 대칭 다각형을 그리는 알고리즘?
하지만이 작동하지합니다 - 석회질 1의 내 기억이 맞다면 적어도 – warren
나는 아니에요 나는 이해한다. 무엇이 작동하지 않을까요? – Lonnen