所以我想删除包含零的矩阵行,但仅限于特定列。例如:
A = [[0 0 0 0; 1 2 0 4; 2 0 1 1; 0 0 0 0; 1 2 3 4; 0 1 2 3];
我希望矩阵A检查第二列和/或第四列是否包含零。如果是这样:然后删除整行。所以结果应该是:
A = [1 2 0 4; 1 2 3 4; 0 1 2 3];
我使用了这个功能:
new_a = A(all(A,2),:)
但是我删除了包含零的所有行。
答案 0 :(得分:1)
你可以写
>>> secondColIsNonzero = A(:, 2) ~= 0;
>>> fourthColIsNonzero = A(:, 4) ~= 0;
>>> keep = secondColIsNonzero & fourthColIsNonzero;
>>> newA = A(keep, :)
newA =
1 2 0 4
1 2 3 4
0 1 2 3
保持(即不删除)第2列或第4列均为零的列。
对于较不详细的解决方案,请考虑同时为两列添加索引并使用带有维度参数的all
:
keep = all(A(:, [2 4]) ~= 0, 2)
答案 1 :(得分:0)
使用find()
函数
B = A(find(A(:,2)~=0),:)
find()
默认返回行,因此在这种情况下调用它会返回第二列上的值不为0的行的索引。