将1D numpy数组转换为矩阵的顶部三角形

问题描述:

是否可以采用包含171个值的1D numpy数组并将这些值放入18X18矩阵的顶部三角形中?将1D numpy数组转换为矩阵的顶部三角形

我觉得我应该能够使用np.triu_indices来做到这一点,但我不能弄明白!

谢谢!

What is the most efficient way to get this kind of matrix from a 1D numpy array?Copy flat list of upper triangle entries to full matrix?

大致的做法是

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]])