numpy / scipy:用1d向量的元素填充数组的上三角形?

时间:2017-08-05 17:57:42

标签: python arrays numpy

假设我有一个扁平的1D向量,它与2D数组的上三角形元素完全对应。

需要将1D向量读入上三角形。

我可能会在python中执行以下操作:

triu_flat = ...
row,col = np.triu_indices(50)

D = np.zeros((50,50))

i=0 
for r in row: 
    for c in col:
        D[r,c] = triu_flat[i]
        i++

但是,必须有一种方法可以通过numpy / scipy操作来实现。

1 个答案:

答案 0 :(得分:4)

你可以简单地使用triu_indices()返回的索引,不需要for循环:

import numpy

data = numpy.arange(6)
out = numpy.zeros((3, 3))
inds = numpy.triu_indices(len(out))
out[inds] = data