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
我有一个名为 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