Numpy: 将数组转换为三角矩阵

19

我在寻找一种内置方法将线性数组转换为三角形矩阵。由于我未能找到这样的方法,因此现在请求帮助实现它。

想象一个类似于以下的数组:

In [203]: dm
Out[203]: array([ 0.80487805,  0.90243902,  0.85365854, ...,  0.95121951,
                  0.90243902,  1.        ])

In [204]: dm.shape
Out[204]: (2211,)

我希望将这个数组转换成一个三角矩阵或对称矩形矩阵。

 In [205]: reshapedDm = dm.trian_reshape(67, 67)

我该如何实现 trian_reshape 函数,使其从一维数组返回一个三角矩阵?

1个回答

34
>>> tri = np.zeros((67, 67))
>>> tri[np.triu_indices(67, 1)] = dm

参见triu_indices文档以获取详细信息。若要获取下三角矩阵,请使用np.tril_indices并将偏移量设置为-1而非1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接