我有這個矩陣的大小10000乘1.我想刪除一些行讓我們從任意位置說50。刪除行後,矩陣的大小將是9950.那麼,我怎樣才能從原始的10000獲得任何元素的索引。我的意思是我想要得到第9999th元素的值作爲原始矩陣中的索引。但是現在由於在刪除一些行後我的新矩陣的大小爲9950,我怎麼知道哪一個是原始矩陣的第9999個元素。做這個的最好方式是什麼?從矩陣中刪除一些行後獲取元素的新索引
0
A
回答
2
所以你想隨機收縮矩陣,但還記得每個元素來自哪裏?並且知道原始元素在哪裏結束?做到這一點的一種方法是保留一個索引,記住縮小矩陣中元素的來源。
比方說,你原來的矩陣是
A = rand(10000,1);
該記住的索引,其中,這些元素來自是:
A_idx = [1:length(A)]';
現在,從@yuk借用,讓我們隨意刪除一些元素:
rp_idx = randperm(numel(A));
kill = rp_idx(1:50);
A(kill) = [];
A_idx(kill) = [];
現在無論多少次你遵循這個程序並刪除元素,原點A(i)
的位置是A_idx(i)
。
和原來矩陣的第k個元素現在可以在
new_idx = find(A_idx == k)
在新的收縮矩陣中找到。請注意,如果您要查找的元素是被刪除的元素之一,則new_idx
將爲空。
0
通常一旦你有要刪除的元素的索引,你同時刪除它們全部。例如,讓我們從10000個矢量A
中生成50個元素的隨機索引。
rp_idx = randperm(numel(A));
rp_idx_50 = rp(1:50);
然後我們就可以刪除這些50個元素
A(rp_idx_50) = [];
如果您由於某種原因需要刪除的元素一個接一個,排序指標,並從月底開始。在這種情況下,您不必查找新的索引。
相關問題
- 1. 從R中刪除索引從矩陣中刪除索引
- 2. 如何刪除一些元素後重新索引對象?
- 3. 從矩陣中刪除NaN元素
- 4. 從矩陣中刪除特定元素
- 5. 在包含某些元素的矩陣中刪除行(python)
- 6. 獲取後從ArrayList中刪除元素
- 7. 查找矩陣中元素的索引
- 8. matlab:從數據中刪除某些行到新的矩陣
- 9. 刪除陣列中的多個元素並重新索引
- 10. 在Python中使用字典式索引獲取矩陣元素
- 11. 從矩陣中刪除行
- 12. 替換由另一個矩陣索引的矩陣元素
- 13. 將元素插入到新陣列中,然後從舊陣列中刪除一些元素被忽略
- 14. 獲取矩陣的排序元素的索引
- 15. 獲取n個最大元素的索引以矩陣
- 16. 提取一些列後sparse_csc矩陣的索引逆轉
- 17. 的java:刪除元素從後陣.split()
- 18. 從矩陣matlab獲取特定元素
- 19. 從陣列中刪除元素知道其索引
- 20. 獲取索引存儲在陣列中的矩陣元素,無循環
- 21. 如何更改在另一個矩陣中索引的矩陣中的元素?
- 22. 刪除元素並重新索引
- 23. 從另一個數組的索引查找矩陣元素 - python
- 24. 獲取表格單元格的HTML,然後從中刪除某些元素
- 25. 從位置中刪除一些元素
- 26. 從數組中刪除一些元素
- 27. 如何刪除matlab中矩陣的最後n個元素?
- 28. 從列表中獲取最後一個元素不管索引
- 29. 從列表中刪除那些索引在另一個列表中的元素
- 30. 從矩陣的每一行中刪除一個元素,每個元素都在不同的列中
這取決於你如何刪除行 - 你能否提供一小段代碼(可重現)來演示如何創建矩陣以及如何決定刪除哪些行以便我們解決它?乾杯。 – 2012-04-01 23:52:29
我想通了。我可以使用原始索引 - 刪除的元素數量來獲取新矩陣中元素的索引。 – 2012-04-02 00:45:58
不,你不能。如果原始索引是(比如說)40,那麼減去刪除的數字(50)就是-10,這不是一個有效的索引。你必須減去被刪除的元素的數量*直到原來的索引(所以,你應該存儲你刪除的元素的索引)。 – 2012-04-02 00:59:53