通过简单命令在Julia中过滤数组数组

时间:2018-09-17 18:50:24

标签: julia

我有两个这样的数组

x = [[1.5, 2.5], [3.5, 4.5]]

两个内部数组的长度始终相等。

我想成对应用过滤器。上例中的对为[1.5, 3.5][2.5, 4.5]。如果两个元素都大于临界值(例如2),则过滤条件应选择一对。结果应再次为原始形式,即

result = [[2.5],[4.5]]

另一个例子是

x = [[1.5, 2.5, 3.5], [4.5, 5.5, 6.5]]-> result = [[2.5, 3.5], [5.5, 6.5]]

我该如何实现?

3 个答案:

答案 0 :(得分:1)

猜测您的精确过滤标准,一种选择是

julia> using SplitApplyCombine

julia> x = [[1.5, 2.5, 3.5], [4.5, 5.5, 6.5]];

julia> invert(filter(y->y[1]>2&&y[2]>2, invert(x)))
2-element Array{Array{Float64,1},1}:
 [2.5, 3.5]
 [5.5, 6.5]

不是方法invert是在外部包SplitApplyCombine.jl中定义的,您必须首先添加(] add SplitApplyCombine)。

但是,直接的for循环实现也可以工作,并且可能更快。

答案 1 :(得分:0)

保留除第一个元素之外的任何元素

julia> x = [[1.5, 2.5, 3.5], [4.5, 5.5, 6.5]];

julia> (x->x[2:end]).(x)
2-element Array{Array{Float64,1},1}:
 [2.5, 3.5]
 [5.5, 6.5]

答案 2 :(得分:-1)

让我弄清楚。如我所料,我要从具有临界值的2元素数组{Array {Float64,1},1}中进行过滤。例如,对于x [1],我的临界值为2。我的输入是 x = [[1.5,2.5,3.5,0.5],[3,4,5,6]]。 我的预期结果应该是 x = [[2.5,3.5],[4,5]]。 你们清楚了吗?