파이썬의 numpy 라이브러리를 사용하여 여러 행과 열의 순서를 변경하여 밀도가 높은 사각형 전이 행렬을 제자리에서 수정하고 싶습니다. 수학적으로 이것은 순열 행렬 P에 의해 행렬을 미리 곱하고 P ^ -1 = P ^ T에 의해 곱셈하는 것에 해당하지만, 이것은 계산적으로 합리적인 해결책은 아닙니다.
지금은 수동으로 행과 열을 교환하고 있지만 numpy에는 멋진 함수 f (M, v)가 있고 여기서 M에는 n 개의 행과 열이 있고 v에는 n 개의 항목이 있으므로 f (M, v)가 업데이트됩니다. 인덱스 순열 v에 따르면 M. 어쩌면 인터넷 검색에 실패했을 것입니다.
numpy의 "고급 인덱싱"으로 이와 같은 것이 가능할 수도 있지만, 그러한 해결책이 제자리에 있지 않다는 것을 이해합니다. 또한 몇 가지 간단한 상황에서는 인덱스 순열을 개별적으로 추적하는 것으로 충분할 수 있지만 제 경우에는 편리하지 않습니다.
추가됨 :
때로는 사람들이 순열에 대해 이야기 할 때 통계에서 p- 값을 얻는 절차의 일부로 임의 순열의 샘플링 만 의미합니다. 또는 가능한 모든 순열을 세거나 열거하는 것을 의미합니다. 나는 이것에 대해 이야기하지 않습니다.
추가 :
매트릭스는 데스크탑 RAM에 들어갈만큼 작지만 생각없이 복사하고 싶지 않을만큼 큽니다. 실제로 행렬을 가능한 한 많이 사용하고 싶지만 RAM에 넣을 수 없다는 불편 함을 다루고 싶지 않으며 행렬에 대해 O (N ^ 3) LAPACK 작업을 수행합니다. 실제 매트릭스 크기를 제한하십시오. 필자는 현재이 행렬을 불필요하게 복사하지만 순열을 위해 쉽게 피할 수 있기를 바랍니다.
M[v]
행을 퍼밋하는 것입니다.