Предположим:
x = [5.0 3.5
6.0 3.6
7.0 3.0]
y = [5.0 4.5
6.0 4.7
8.0 3.0]
Опять же, есть много способов сделать это. Используя DataFrames
вы можете написать:
using DataFrames
df = join(DataFrame(x, [:id, :x]), DataFrame(y, [:id, :y]), on=:id)
[df[:id] df[:x]-df[:y]]
Вы также можете конвертировать оригинальные массивы в словари и работать с ними:
dx = Dict(x[i,1] => x[i,2] for i in 1:size(x, 1))
dy = Dict(y[i,1] => y[i,2] for i in 1:size(y, 1))
ks = sort!(collect(intersect(keys(dx), keys(dy))))
[ks [dx[k]-dy[k] for k in ks]]
Разница между этими двумя методами заключается в том, как они будут обрабатывать дубликаты в x
или y
в первом столбце. Первый будет производить все комбинации, второй будет хранить только последнее значение для каждой клавиши.