Logical/Boolean Julia 中数组的索引

Logical/Boolean indexing of an array in Julia

a = [1 2 3 4 5]

我想用 10 替换条目 4 和 5( > 3)。

我试过了a > 3。没有成功。

如何在 Julia 中执行此操作?

相关问题:

你可以这样做:

julia> a = [1 2 3 4 5]
1×5 Matrix{Int64}:
 1  2  3  4  5

julia> a[a .> 3] .= 10
2-element view(::Vector{Int64}, [4, 5]) with eltype Int64:
 10
 10

julia> a
1×5 Matrix{Int64}:
 1  2  3  10  10

julia> a
1×5 Matrix{Int64}:
 1  2  3  4  5

julia> replace(x -> x > 3 ? 10 : x, a) # allocates a new array
1×5 Matrix{Int64}:
 1  2  3  10  10

julia> a # a is unchanged
1×5 Matrix{Int64}:
 1  2  3  4  5

julia> replace!(x -> x > 3 ? 10 : x, a) # updates the array in place
1×5 Matrix{Int64}:
 1  2  3  10  10

julia> a # a is updated in place
1×5 Matrix{Int64}:
 1  2  3  10  10

如果您需要在大型数组上多次执行此操作(例如,在您多次调用的某个函数的热循环内),那么使用 replace! 将是一个更快的选择。