我想知道 Julia 中是否有命令或包允许我们直接提取矩阵的下三角形部分,不包括对角线。显然,我可以为此调用 R 命令(例如 gdata 包的 lowerTriangle ),但我想知道 Julia 是否有类似的东西。例如,假设我有矩阵
1.0 0.751 0.734
0.751 1.0 0.948
0.734 0.948 1.0
我不想创建一个下三角矩阵
NA NA NA
0.751 NA NA
0.734 0.948 NA
但将矩阵的下部提取为数组:
0.751 0.734 0.948
最佳答案
如果您可以创建下三角矩阵作为中间步骤,则可以使用逻辑索引和 tril!
用一个额外的参数来获得你需要的东西。
julia> M = [1.0 0.751 0.734
0.751 1.0 0.948
0.734 0.948 1.0];
julia> v = M[tril!(trues(size(M)), -1)]
3-element Array{Float64, 1}:
0.751
0.734
0.948
trues
调用返回一个 M 形状的数组,其中填充了 bool 值 true
值。 tril!
然后将其修剪为我们想要的矩阵部分。 tril 的第二个参数!告诉它从哪个超对角线开始,我们在这里使用它来避免前导对角线中的值。我们使用它的结果对 M 进行索引,并返回一个具有所需值的数组。
关于matrix - 提取矩阵的下三角部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50651781/