我有一个名为 Pop 的 3d 数组。我想知道满足两个不同条件的次数,它们都独立地为我工作,但我无法将两者放在一起。
Pop[end, :, 1] .== 3
工作正常,生成一个由 1 和 0 组成的正确整数向量。还有
Pop[end-1, :, 1] .== 4
有效,再次返回整数向量,但是当我将两者放在一起时:
count(Pop[end, :, 1] .== 3 && Pop[end-1, :, 1] .== 4)
我收到此错误:
ERROR: TypeError: non-boolean (BitArray{1}) used in boolean context
这有什么帮助,可以看到两个数值数组不能以 boolean 方式进行比较。我的语法有什么问题来获取满足两个条件的次数。很简单,我知道,但我无法理解!谢谢。 J
最佳答案
&&
是一个短路 boolean 值,这意味着如果第一项为 true
,则不会评估其余项(请参阅 documentation )。这也意味着它仅适用于单个 boolean 值,并且不能通过数组进行广播。
&
是按位 AND 运算符 ( 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
关于arrays - Julia,在两个数组中选择实例的整数与 boolean 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65955363/