gpt4 book ai didi

python - Julia 中数组的逻辑运算

转载 作者:行者123 更新时间:2023-12-02 02:31:37 26 4
gpt4 key购买 nike

我有两个由 1 和 0 组成的 nxm 矩阵(称它们为 A 和 B)。我想将它们转换为 boolean 变量,然后对它们应用“与”和“或”运算。在 python 中,这很容易:

A = np.array(A, dtype=bool)
B = np.array(B, dtype=bool)

A | B
A & B

但是,我想在 Julia 中做同样的事情,但我遇到了一些问题。我首先通过

转换为 boolean 值
A = convert(Array{Bool}, A)
B = convert(Array{Bool},B)

但是当我做了 A&&B 后,我明白了

TypeError: non-boolean (Array{Bool,2}) used in boolean context

我做错了什么?

最佳答案

我们首先创建存储 0-1 值的矩阵:

julia> using Random

julia> Random.seed!(1234);

julia> A = rand([0, 1], 3, 4)
3×4 Array{Int64,2}:
0 0 1 1
0 1 1 0
1 0 1 0

julia> B = rand([0, 1], 3, 4)
3×4 Array{Int64,2}:
1 1 1 0
0 1 1 1
0 1 1 1

然后使用.广播Bool构造函数来获取 boolean 矩阵:

julia> A_bool = Bool.(A)
3×4 BitArray{2}:
0 0 1 1
0 1 1 0
1 0 1 0

julia> B_bool = Bool.(B)
3×4 BitArray{2}:
1 1 1 0
0 1 1 1
0 1 1 1

类似地,在 &| 运算符上使用 . 广播来获取您想要的内容:

julia> A_bool .| B_bool
3×4 BitArray{2}:
1 1 1 1
0 1 1 1
1 1 1 1

julia> A_bool .& B_bool
3×4 BitArray{2}:
0 0 1 0
0 1 1 0
0 0 1 0

请注意,在这种特殊情况下,在原始矩阵上使用 |& 将获得等效结果(但矩阵将包含 0 -1 整数):

julia> A .| B
3×4 Array{Int64,2}:
1 1 1 1
0 1 1 1
1 1 1 1

julia> A .& B
3×4 Array{Int64,2}:
0 0 1 0
0 1 1 0
0 0 1 0

关于python - Julia 中数组的逻辑运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64959701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com