Julia 中数组的逻辑/布尔索引

Vin*_*nod 5 indexing julia

a = [1 2 3 4 5]
Run Code Online (Sandbox Code Playgroud)

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

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

如何在朱莉娅中做到这一点?

相关qn:Julia中的逻辑索引

Bog*_*ski 10

你可以做:

\n
julia> a = [1 2 3 4 5]\n1\xc3\x975 Matrix{Int64}:\n 1  2  3  4  5\n\njulia> a[a .> 3] .= 10\n2-element view(::Vector{Int64}, [4, 5]) with eltype Int64:\n 10\n 10\n\njulia> a\n1\xc3\x975 Matrix{Int64}:\n 1  2  3  10  10\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
julia> a\n1\xc3\x975 Matrix{Int64}:\n 1  2  3  4  5\n\njulia> replace(x -> x > 3 ? 10 : x, a) # allocates a new array\n1\xc3\x975 Matrix{Int64}:\n 1  2  3  10  10\n\njulia> a # a is unchanged\n1\xc3\x975 Matrix{Int64}:\n 1  2  3  4  5\n\njulia> replace!(x -> x > 3 ? 10 : x, a) # updates the array in place\n1\xc3\x975 Matrix{Int64}:\n 1  2  3  10  10\n\njulia> a # a is updated in place\n1\xc3\x975 Matrix{Int64}:\n 1  2  3  10  10\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n