将1维numpy数组转换为矩阵的上三角形

5

能否将包含171个值的1D numpy数组放入18X18矩阵的顶部三角形中?

我觉得应该可以使用np.triu_indices来完成,但我还没有完全弄清楚!

谢谢!

1个回答

5

请参考如何从一维Numpy数组中高效获取这种类型的矩阵?如何将上三角形式的列表拷贝到完整矩阵中?

大致的方法是:

result = np.zeros(...)
ind = np.triu_indices(...)
result[ind] = values

具体细节取决于目标数组的大小以及值在目标中的布局。

In [680]: ind = np.triu_indices(4)
In [681]: values = np.arange(16).reshape(4,4)[ind]
In [682]: result = np.zeros((4,4),int)
In [683]: result[ind]=values
In [684]: values
Out[684]: array([ 0,  1,  2,  3,  5,  6,  7, 10, 11, 15])
In [685]: result
Out[685]: 
array([[ 0,  1,  2,  3],
       [ 0,  5,  6,  7],
       [ 0,  0, 10, 11],
       [ 0,  0,  0, 15]])

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