Это приоритет оператора проблема. То, что вы пишете в первом print
, не соответствует вашим ожиданиям.
print(matr[:,2].==i .* matr[:,3].!=i)
Это эквивалентно (см. Скобки)
print(matr[:,2] .== (i .* matr[:,3]) .!=i)
, который представляет собой сравнение цепочек , так что matr[k,2] == (i .* matr[k,3]))
и matr[k,2] == (i .* matr[k,3]))
должны быть истинными для k
-го индекса, чтобы сравнение цепочек вернуло true
для k
й индекс.
Вместо этого вы можете написать тот же термин с явными скобками, чтобы позаботиться о проблеме приоритета.
print((matr[:,2].==i) .* (matr[:,3].!=i))
Вместо умножения вы можете транслировать &
.
print((matr[:,2].==i) .& (matr[:,3].!=i))
Оба из них должны дать вам правильный ответ.