2017-01-02 99 views
1

如何重新排列Eigen矩陣的行(或列)而不復制它們?您可以使用Eigen::Map在不復制數據的情況下重塑它們,所以我假設有一些方法可以更改順序,但在文檔中似乎沒有示例。特徵重新排序行無複製

+1

'Eigen :: Map'可以在不復制的情況下重新塑形,因爲它不需要重新排序,只需解讀數組。這不適用於排列行或列。 – Sneftel

+1

'swap'似乎很快(請參閱https://eigen.tuxfamily.org/dox/AsciiQuickReference.txt)。 –

回答

2

您可以將矩陣乘以PermutationMatrixTranspositions matrix。如果乘以P * A,則根據P中的索引排列A的行。產品本身是懶惰的,即只在需要時評估(但是,在構建臨時對象時,評估更復雜的表達式時沒有強有力的保證)。