矩阵每一行元素对比


#1

问题如下:

我现在有两个矩阵:

A=\left[\begin{matrix}0&1&2&3\\4&5&6&7\\... \end{matrix} \right], B=\left[\begin{matrix}1&2&3\\4&6&7\\&... \end{matrix} \right]

其中 A 的第一行包含了 B 的第一行, A 的第二行包含了 B 的第二行。

我现在想要对 A,B 两个矩阵的每一行作比较,然后输出矩阵 A 中多余的元素,例如当对比第一行时输出 0 ,对比第二行输出 5

大家有没有比较快捷方法,说下思路就好:joy:,或者julia是不是有自带的方法可以直接解决呢?


#2

直接对行进行循环

nrows = size(A, 1)
R = zeros(Int,  nrows)
@inbounds for i in 1:nrows
    @views d = setdiff(A[i, :], B[i, :])
    isempty(d) || R[i] = d[1]
end

#3

:ok_hand:多谢!


#4

有一个eachrow,eachcol是可以拿来用的 (Julia v1.1+). 例如…

julia> map((ra, rb)->setdiff(ra, rb), eachrow(A), eachrow(B))
2-element Array{Array{Int64,1},1}:
 [0]
 [5]

#5

多谢:ok_hand: