Vector 选择不属于基本元素中整数列表的元素
如果我有一个Float64向量Y和一个整数向量x,例如x=rand(1:1000500),有没有一种优雅的方法可以在非x项中提取Y的元素?到目前为止,我已经尝试了Vector 选择不属于基本元素中整数列表的元素,vector,julia,element,Vector,Julia,Element,如果我有一个Float64向量Y和一个整数向量x,例如x=rand(1:1000500),有没有一种优雅的方法可以在非x项中提取Y的元素?到目前为止,我已经尝试了Y[findall([I∉ x代表1:1000中的i])]。这是可行的,但是来自R,我希望做一些类似于Y[!x]或Y[!x],这两种方法都会抛出错误。我想避免使用像DataFrames这样的包,但如果这不可能,我理解 提前感谢。使用逆变芯片中的而不是(这也可以通过数据帧导入)。 在您的情况下,这是Y[不是(x)],请参见下面的代码: j
Y[findall([I∉ x代表1:1000中的i])]
。这是可行的,但是来自R,我希望做一些类似于Y[!x]
或Y[!x]
,这两种方法都会抛出错误。我想避免使用像DataFrames这样的包,但如果这不可能,我理解
提前感谢。使用
逆变芯片中的而不是(这也可以通过数据帧导入)。
在您的情况下,这是Y[不是(x)]
,请参见下面的代码:
julia> using InvertedIndices # or using DataFrames
julia> Y = collect(1:0.5:4)
7-element Vector{Float64}:
1.0
1.5
2.0
2.5
3.0
3.5
4.0
julia> x=rand(1:7, 3)
3-element Vector{Int64}:
3
2
6
julia> Y[Not(x)]
4-element Vector{Float64}:
1.0
2.5
3.0
4.0
由于问题明确要求解决方案不依赖于标准库之外的包,因此这里有一个替代方案:
这里我们使用部分应用的∉代码>。从
中的文档中:
在(集合)
∈(收藏)
创建一个函数,用于检查其参数是否为集合中的,
i、 e.相当于集合
中的y->y的函数
同样的东西可以用几种不同的方式编写,例如Y[eachindex(Y)。∉ 参考(x)]
(适用于本例,但您应该理解并查看和)
需要注意的一点是,当x
较大时,这些解决方案的性能不佳。为了提高性能,可以从x
创建一个。例如:
Y[∉(Set(x)).(eachindex(Y))]
Y[∉(Set(x)).(eachindex(Y))]