在索引数组中组合逻辑运算 - Julia

Vin*_*nod 1 indexing logical-operators julia

给定 Julia 中的一维数组,找到 a (= 4) 和 b(= 7) 之间的所有元素。

a = 4;b = 7;
x = collect(1:10)
x[isless.(x,a)] 
Run Code Online (Sandbox Code Playgroud)

将找到数组中所有小于 a = 4 的元素。

如何在索引中组合两个逻辑运算。

 x[isless.(x,a) && !isless.(x,b)] 
Run Code Online (Sandbox Code Playgroud)

不成功。

Bog*_*ski 5

如果您可以使用<运算符而不是isless(这很可能是这种情况,除非您使用NaNmissing-0.0),那么您可以编写:

julia> x[a .< x .< b]
2-element Vector{Int64}:
 5
 6
Run Code Online (Sandbox Code Playgroud)

或者您可以使用filter

julia> filter(v -> a < v < b, x)
2-element Vector{Int64}:
 5
 6
Run Code Online (Sandbox Code Playgroud)

这让我想到了我添加此评论的原因。您要求进行就地操作。filter!这对于索引来说是不可能的,但是如果您使用以下命令,则可以实现它Vector

julia> filter!(v -> a < v < b, x)
2-element Vector{Int64}:
 5
 6

julia> x
2-element Vector{Int64}:
 5
 6
Run Code Online (Sandbox Code Playgroud)