在 Julia 中获取满足多个布尔值的矩阵的列

Obtaining columns of a matrix satisfying multiple booleans in Julia

我试图只获取矩阵中满足两个或多个布尔条件的那些列。更具体地说,我试图根据对特征值的某些约束只找到矩阵的那些特征向量。

在 python3.x 我会做 :

def get_special_vectors(A:np.ndarray,thresold1:float,thresold2:float) -> np.ndarray:
   eigval, eigvec = np.linalg.eig(A)
   eigvec = eigvec[:,np.array(eigval >= threshold1) & np.array(eigval <= thresold2)]
return eigvec

但是在 Julia 中,我遵循 post 但我似乎弄乱了 AND (&) 运算符。我正在尝试以下结果 MethodError:

eigvec = eigvec[:,vec(evalA .< 1.0) & vec(evalA .> 0)]

如果有人可以分享任何有用的建议或任何类型的帮助,我会很高兴。提前致谢!

你还需要广播 & 所以写 .& 像这样:

eigvec[:,vec(evalA .< 1.0) .& vec(evalA .> 0)]

然而在这种情况下,以下也应该有效:

eigvec[:,vec(0 .< evalA .< 1.0)]

(我看不出 evalA 是什么,所以很难判断您的代码中是否确实需要 vec - 我认为它是必需的,所以我保留了它)

你还应该广播 &:

vec(evalA .< 1.0) .& vec(evalA .> 0)

我不能确定它是否能解决你的问题,因为你没有给出完整的例子

您可能还想查看 eachroweachcol