将一维 numpy 数组转换为矩阵的顶部三角形

COM*_*HEM 5 python numpy

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

我觉得我应该能够使用 np.triu_indices 来以某种方式做到这一点,但我不太明白!

谢谢!

hpa*_*ulj 5

请参阅从一维 numpy 数组获取此类矩阵的最有效方法是什么?并将上三角形条目的平面列表复制到完整矩阵?

大致的做法是

result = np.zeros(...)
ind = np.triu_indices(...)
result[ind] = values
Run Code Online (Sandbox Code Playgroud)

详细信息取决于目标数组的大小以及目标中值的布局。

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]])
Run Code Online (Sandbox Code Playgroud)