我有一個10×10的矩陣。我想從這個主矩陣中形成一個子矩陣,使用除第1,第2和第8列和行之外的所有行和列。
我知道Part可以用來形成子矩陣,但是這些例子主要是關於僅使用連續的行和列來形成子矩陣的。如何用矩陣的某些非連續行和列形成子矩陣
回答
如果這是你的矩陣:
tst = RandomInteger[10, {10, 10}];
這將做的情況下,招手頭:
tst[[{3, 4, 5, 6, 7, 9, 10}, {3, 4, 5, 6, 7, 9, 10}]]
而是明確的清單,你可以使用Complement[Range[10],{1,2,8}]
。
這是另一種方法。
打電話給你的矩陣
test = Array[m, {10, 10}]
那麼你的子矩陣是
subTest = Nest[Delete[Transpose[#], {{1}, {2}, {8}}] &, test, 2]
與獅子座的StackOverflow上方法
subTest == test[[#, #]] &[Complement[Range[10], {1, 2, 8}]]
(* True *)
比較Leondid方法與我的方法(對於'100000'重複)的時間表明他的速度大約快了2.5倍.... – Simon 2011-06-06 22:14:38
真(+1),但是獅子座的會更容易記住和理解... – 2011-06-06 22:25:18
+ 1 Love the double Transpose :) – 2011-06-06 22:35:22
- 1. Matlab:選擇非連續的矩陣列
- 2. 我如何釋放一個矩陣的某些行和列
- 3. CUDA中非矩形矩陣的計算機逆矩陣
- 4. 將矩陣分成子組矩陣
- 5. 以矩陣形式獲得矩陣行
- 6. 在C++中將矩陣分解成方形子矩陣
- 7. Libgdx矩形陣列
- 8. 使用刪除刪除矩形矩陣中的行和列
- 9. 從矩陣生成的矩陣與Matlab生成的Python圖形
- 10. 從Matlab矩陣導出某些列
- 11. 按列連接兩個矩陣並提取子矩陣
- 12. Python的矩陣,行和列
- 13. 算法用於放置矩形與某些尺寸成自由區中矩陣
- 14. 選擇犰狳子矩陣具有非連續的索引
- 15. 列出成矩陣
- 16. 乘以元素陣列和矩形矩陣
- 17. 「真」元素的最大連續方形子矩陣
- 18. MATLAB - 用子矩陣創建矩陣
- 19. 矩陣指針到子矩陣用C
- 20. 稀疏矩陣和矩陣
- 21. Python Numpy - 附加三個陣列形成矩陣或3D陣列
- 22. 帶宏的矩形陣列
- 23. 矩陣列表中的列表矩陣
- 24. 98%稀疏矩陣的矩陣完成
- 25. 將矩陣分成更小的矩陣
- 26. 查找給定矩陣的子矩陣
- 27. 如何將正方形矩陣分解爲正方形子矩陣?
- 28. RLE尋找矩陣矩形
- 29. svds不適用於某些矩陣?
- 30. 2D矩形陣列成函數
Sreya,歡迎比較!不要忘記爲自己喜歡的下面的答案投票,如果其中一人回答您的問題以滿意,請使用答案旁邊的複選標記接受答案。只要你喜歡,你可以改變你的選擇。 – 2011-06-06 22:36:19
請參閱[這裏](http://stackoverflow.com/q/5299798/499167)瞭解一個密切相關的SO問題,這可能是有趣的。 WReach已經描述了兩個非常有用的功能,「takeOperator」和「dropOperater」,它們也會按照你的要求做,我想。見[這裏](http://stackoverflow.com/questions/5299798/efficient-way-to-pick-delete-a-list-of-rows-columns-in-a-matrix-in-mathematica/5300892#5300892 ) – tomd 2011-06-07 06:07:10