使用setdiff比较Julia中的多个列

时间:2016-04-20 06:00:40

标签: arrays julia

我有一个矩阵X,有3列[x1 x2 x3]和n行。我有一个第二个矩阵Y,有三列[y1 y2 y3]和m行。我想从X返回与Y中的行不同的所有行。

我一直在尝试使用setdiff函数执行此操作,但我无法弄清楚如何使用此函数同时比较列(即比较[x1 y1] [x2 y2] [x3 y3])并基于此比较的输出,而不是基于单列比较的输出。

我希望结果如下: 对于X的某些行i等于Y [x1 x2 x3] = [y1 y2 y3]的某些行j,则X的行将被排除在新X的输出中。

1 个答案:

答案 0 :(得分:1)

setdiff遍历两个参数,您需要做的是为两个矩阵创建行集合。这可能不是最有效的方式,但它有效:

x = [1 2 3; 4 5 6; 7 8 9; 10 11 12]
xrows = Vector()
for i in 1:size(x, 1)
    push!(xrows, x[i, :])
end

y = [1 1 1 ; 4 5 6; 9 9 9]
yrows = Vector()
for i in 1:size(y, 1)
    push!(yrows, y[i, :])
end

vcat(setdiff(xrows, yrows)...)