如何在Julia中将集合分成子集?

时间:2016-03-29 11:40:48

标签: julia

有输入列表X和输出列表Y。每个输入都可以1成功或0失败。

X = [6 7 8]
Y = [1 1 0]

将输入X分成两组的Julia方式是什么 - 成功与失败?

XSuccess = [6 7]
XFails = [8]

我可以用循环来做,但似乎至少有两种更好的解决方法 - 使用查找功能和列表推导

2 个答案:

答案 0 :(得分:2)

XSuccess = getindex(X,find(Y))
XFail = getindex(X, find(x->x==0,Y))

检查数组索引上的the docs

答案 1 :(得分:2)

正如您所指出的,有几种方法可以做到这一点。让我们先看看find()函数方法,然后我们将看一下列表推导方法。

x = [6, 7, 8]
y = [1, 1, 0]
xsucc = x[find(y .== 1)]
xfail = x[find(y .== 0)]

对于列表理解方法,我们可以执行以下操作。

x = [6, 7, 8]
y = [1, 1, 0]
xsucc = [w for w in x[y .== 1]]
xfail = [w for w in x[y .== 0]]

其中,我不确定哪个被认为是最惯用的Julia代码(可能都不是)。