在 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)
我不能确定它是否能解决你的问题,因为你没有给出完整的例子
您可能还想查看 eachrow
和 eachcol
我试图只获取矩阵中满足两个或多个布尔条件的那些列。更具体地说,我试图根据对特征值的某些约束只找到矩阵的那些特征向量。
在 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 中,我遵循 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)
我不能确定它是否能解决你的问题,因为你没有给出完整的例子
您可能还想查看 eachrow
和 eachcol