根据给定索引拆分数组
Split array based on given indices
我想根据给定的索引将一个数组分成两个。具体来说,有两个数组,一个数组 A 包含数据(3 列),另一个数组 B 包含索引。
A = [10 11 12;
20 21 22;
30 31 32;
40 41 42]
B = [1 3]
因此,我想要两个新数组 C 和 D,其中 C 包含 A 中给定索引 B 和 D 中的所有值,包括其余值。
C = [10 11 12;
30 31 32]
D = [20 21 22;
40 41 42]
目前,我有一个循环(使用 ismember 检查 B 中的 i 并将 A 中的值相应地附加到数组 C/D),但由于我有大量数据,因此需要很长时间。感谢任何帮助,我知道 matlab 中的所有内容都有一个数组函数。
给出
A = [10 11 12;
20 21 22;
30 31 32;
40 41 42];
B = [1 3];
我们可以通过一些简单的索引来创建 C
C = A( B, : ); % rows from A indexed by B, all columns
并使用 A
的所有行索引的 setdiff
和数组 B
创建 D
D = A( setdiff( 1:size(A,1), B ), : ); % rows from A *not* indexed by B, all columns
这道题最具挑战性的部分是获得D
。您可以免费将 A
分配给 D
,并删除不需要的行。
C = A(B,:);
D = A;
D(B,:) = [];
我想根据给定的索引将一个数组分成两个。具体来说,有两个数组,一个数组 A 包含数据(3 列),另一个数组 B 包含索引。
A = [10 11 12;
20 21 22;
30 31 32;
40 41 42]
B = [1 3]
因此,我想要两个新数组 C 和 D,其中 C 包含 A 中给定索引 B 和 D 中的所有值,包括其余值。
C = [10 11 12;
30 31 32]
D = [20 21 22;
40 41 42]
目前,我有一个循环(使用 ismember 检查 B 中的 i 并将 A 中的值相应地附加到数组 C/D),但由于我有大量数据,因此需要很长时间。感谢任何帮助,我知道 matlab 中的所有内容都有一个数组函数。
给出
A = [10 11 12;
20 21 22;
30 31 32;
40 41 42];
B = [1 3];
我们可以通过一些简单的索引来创建 C
C = A( B, : ); % rows from A indexed by B, all columns
并使用 A
的所有行索引的 setdiff
和数组 B
D = A( setdiff( 1:size(A,1), B ), : ); % rows from A *not* indexed by B, all columns
这道题最具挑战性的部分是获得D
。您可以免费将 A
分配给 D
,并删除不需要的行。
C = A(B,:);
D = A;
D(B,:) = [];