Julia 两个数组按行求交
我刚从MATLAB转到Julia,我正在寻找一种按行求两个数组的交集的方法。例如,如果C=[10;01],D=[-10;01],则输出将是B,ind1,ind2=[01],2,2 MATLAB的对应项是:[B,ind1,ind2]=相交(C,D,'rows') 我该怎么做?在某些模块中是否有一个内置函数可以启用此操作?定义:Julia 两个数组按行求交,julia,Julia,我刚从MATLAB转到Julia,我正在寻找一种按行求两个数组的交集的方法。例如,如果C=[10;01],D=[-10;01],则输出将是B,ind1,ind2=[01],2,2 MATLAB的对应项是:[B,ind1,ind2]=相交(C,D,'rows') 我该怎么做?在某些模块中是否有一个内置函数可以启用此操作?定义: function intersectML(ms::Array...) t = map(x->Dict(x[2][i,:]=>(x[1],i) for i=1
function intersectML(ms::Array...)
t = map(x->Dict(x[2][i,:]=>(x[1],i) for i=1:size(x[2],1)),enumerate(ms))
u = intersect(map(keys,t)...)
return (u,map(x->[x[r][2] for r in u],t)...)
end
然后你有:
julia> C = [1 0;0 1]; D = [-1 0;0 1]
julia> intersectML(C,D)
(Array{Int64,1}[[0,1]],[2],[2])
定义:
function intersectML(ms::Array...)
t = map(x->Dict(x[2][i,:]=>(x[1],i) for i=1:size(x[2],1)),enumerate(ms))
u = intersect(map(keys,t)...)
return (u,map(x->[x[r][2] for r in u],t)...)
end
然后你有:
julia> C = [1 0;0 1]; D = [-1 0;0 1]
julia> intersectML(C,D)
(Array{Int64,1}[[0,1]],[2],[2])