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!
将是一个更快的选择。
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!
将是一个更快的选择。