使用具有多个条件的findall

时间:2019-05-07 09:57:07

标签: julia

以下代码在p的第50列中找到索引,该索引的值等于1。

findall(p[:,50].== 1)

但是假设我对筛选多个标准感兴趣。例如,如果我也对值为0.5的索引感兴趣。在这种情况下,我尝试了以下方法,但是出了点问题:

findall(p[:,50].== 1 | p[:,50].== 0.5)

1 个答案:

答案 0 :(得分:3)

您忘记点|运算符。但您还需要使用括号:

findall((p[:,50].== 1) .| (p[:,50].== 0.5))

但是,这仍然有些浪费,因为您要为同一列制作两个副本,并且要分配五个不需要的中间向量。您应该尝试使用谓词函数来避免这种情况,例如在这里:

findall(x->x in (0.5, 1.0), p[:,50])

findall(x->x==0.5||x==1, p[:,50])

最重要的是,您可以使用view来避免由于p[:,50]而导致的分配:

findall(x->x==0.5||x==1, view(p, :,50))