Julia,整数与布尔结果来自两个数组中的实例选择

Julia, integer vs boolean results from selection of instances in two arrays

我有一个名为 Pop 的 3d 数组。我想知道有多少次满足两个不同的条件,它们都独立地为我工作,但我不能把两者放在一起。

Pop[end, :, 1] .== 3

工作正常,生成一个由 1 和 0 组成的整数向量,这是正确的。还有

Pop[end-1, :, 1] .== 4

再次工作 returns 整数向量,但是当我将两者放在一起时:

count(Pop[end, :, 1] .== 3 && Pop[end-1, :, 1] .== 4)

我收到这个错误:

ERROR: TypeError: non-boolean (BitArray{1}) used in boolean context

哪位有帮助,可以看出两个数值数组不能以布尔方式进行比较。我的语法有什么问题来计算满足两个条件的次数。我知道很简单,但我做不到!谢谢。 J

&& 是短路布尔值,这意味着如果第一项是 true,则不计算其余项(请参阅 documentation)。这也意味着它仅适用于单个布尔值,不能通过数组广播。

& 是您要在此处使用的按位与运算符 (documentation),因为它可以使用语法 .& 在数组上广播,就像您使用 .==

julia> [true, true, false, false] .& [true, false, true, false]
4-element BitVector:
 1
 0
 0
 0

更新

在 Julia 1.7+ 中,短路运算符 &&|| 现在可以打点参与广播融合,如 .&&.|| (#39594):

julia> [true, true, false, false] .&& [true, false, true, false]
4-element BitVector:
 1
 0
 0
 0