&-ing Julia 中的两个 BitArrays?

Kri*_*ine 3 julia

使用 Julia 1.5.3 和 Julia 1.6.0 这两个版本似乎都不支持 & 用于 BitArrays。

例如,我有两个 BitArrays

x = BitArray([1,0,1])
Run Code Online (Sandbox Code Playgroud)

y=BitArray([0,0,1])
Run Code Online (Sandbox Code Playgroud)

并希望将它们相交以找到:

x&y=BitArray([0,0,1]) 
Run Code Online (Sandbox Code Playgroud)

但是运算符 & 似乎不支持 BitArrays 并且使用 .* 似乎非常耗时。

有谁知道在 Julia 中找到两个位数组的交集的好方法吗?

DNF*_*DNF 9

&适用于标量值,而您将它们应用于数组。将标量运算符(或函数)应用于数组时,您应该使用“广播”,您可以通过向运算符添加一个点来实现:

jl> x .& y
3-element BitVector:
 0
 0
 1
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我看不到.*和之间的任何时间差异.&。事实上似乎*只是调用&.

你看到什么样的表现?

jl> using BenchmarkTools

jl> @btime $x .* $y;
  48.479 ns (2 allocations: 128 bytes)

jl> @btime $x .& $y;
  48.426 ns (2 allocations: 128 bytes)
Run Code Online (Sandbox Code Playgroud)