[英]Is there an equivalent to R's negative indexing in Matlab?
在R
,如果我們有一個向量和一個索引列表,則可以使用負索引表達我們想要“除這些索引之外的所有元素”的想法。 特別是,請考慮以下R
代碼:
data = rnorm(100)
indices = sample(1:length(data), length(data)/2)
training_data = data[indices]
test_data = data[-indices]
此代碼后, sampled_data
包含所有要素data
,其指數中不包括indices
。 在matlab中有與此等效的東西嗎?
我直接嘗試使用相同的語法(當然用wtih ()
代替[]
,但是它只是給出了錯誤
Subscript indices must either be real positive integers or logicals.
Matlab不允許使用負索引。 您可以刪除元素的方法是:
data2 = data;
data2(indices) = []; % remove selected elements
但是在進行機器學習時,我更喜歡使用邏輯索引:
istest = randn(length(data), 1) < 0; % random logicals: 50% 0's and 50% 1's
istrain = ~istest;
% Now operate on data(istest) and data(istrain).
我最終將索引數組轉換為邏輯數組(而不是直接生成邏輯數組),因為我仍然希望將原始索引用於其他目的。
indices = datasample(1:length(data), length(data) / 2);
logical = false(length(data) ,1);
logical(indices) = true;
training_data = data(logical)
test_data = data(~logical)
至少對於我來說,這種生成邏輯數組的方式使控制培訓和測試示例的百分比變得更加容易。
但是,我仍然發現jez的解決方案具有很高的教育意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.