Использование findall с несколькими критериями - PullRequest
0 голосов
/ 07 мая 2019

Следующий код находит индексы в 50-м столбце p, где значение равно 1.

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

Но предположим, что меня заинтересовал поиск нескольких критериев.Например, если меня также интересовали индексы, где значение равно 0,5.Я попробовал следующее в этом случае, но что-то идет не так:

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

1 Ответ

3 голосов
/ 07 мая 2019

Вы забыли поставить точку |. Но вам также нужно использовать парены:

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))
...