首页 > 解决方案 > Julia中数组内的成对比较

问题描述

假设我们在 Julia 中有一个 6 元素数组,例如Int64[1,1,2,3,3,4]. 如果我们想逐元素比较两个数组,我们知道可以使用 ".=="; 但我的目标是在上述数组中进行所有成对比较:如果每对的元素 (i,j) 相等,则将其设置为 1(或 true),但如果它们不同,则将其设置为 0 . 所有成对比较都存储在一个 6x6 矩阵中。是否可以在没有循环的情况下在 Julia 中做到这一点?谢谢你。

标签: arrayscomparisonjuliapairwise

解决方案


您可以使用广播将行与列进行比较的事实来简单地在数组及其转置之间进行比较:

julia> A = [1,1,2,3,3,4]
6-element Array{Int64,1}:
 1
 1
 2
 3
 3
 4

julia> A .== A'
6×6 BitArray{2}:
  true   true  false  false  false  false
  true   true  false  false  false  false
 false  false   true  false  false  false
 false  false  false   true   true  false
 false  false  false   true   true  false
 false  false  false  false  false   true

推荐阅读