Saya ingin memodifikasi matriks transisi persegi yang padat di tempat dengan mengubah urutan beberapa baris dan kolomnya, menggunakan perpustakaan numpy python. Secara matematis ini berhubungan dengan pra-mengalikan matriks dengan matriks permutasi P dan mengalikannya dengan P ^ -1 = P ^ T, tetapi ini bukan solusi yang masuk akal secara komputasi.
Saat ini saya secara manual bertukar baris dan kolom, tetapi saya berharap numpy memiliki fungsi yang bagus f (M, v) di mana M memiliki n baris dan kolom, dan v memiliki n entri, sehingga f (M, v) memperbarui M menurut indeks permutasi v. Mungkin saya hanya gagal mencari di internet.
Sesuatu seperti ini mungkin terjadi dengan "pengindeksan maju" numpy, tetapi pemahaman saya adalah bahwa solusi seperti itu tidak akan ada di tempat. Juga untuk beberapa situasi sederhana mungkin cukup untuk hanya secara terpisah melacak permutasi indeks, tetapi ini tidak nyaman dalam kasus saya.
Ditambahkan:
Kadang-kadang ketika orang berbicara tentang permutasi, mereka hanya berarti pengambilan sampel permutasi acak, misalnya sebagai bagian dari prosedur untuk mendapatkan nilai-p dalam statistik. Atau mereka berarti menghitung atau menghitung semua permutasi yang mungkin. Saya tidak membicarakan hal-hal ini.
Ditambahkan:
Matriks ini cukup kecil untuk masuk ke RAM desktop tetapi cukup besar sehingga saya tidak ingin menyalinnya tanpa berpikir. Sebenarnya saya ingin menggunakan matriks sebesar mungkin, tetapi saya tidak ingin berurusan dengan ketidaknyamanan karena tidak dapat menahan mereka dalam RAM, dan saya melakukan operasi O (N ^ 3) LAPACK pada matriks yang juga akan membatasi ukuran matriks praktis. Saya saat ini menyalin matriks sebesar ini tidak perlu, tetapi saya berharap ini dapat dengan mudah dihindari untuk permutasi.
M[v]
untuk mengubah baris.