2017-08-05 3 views
1

2次元配列の上三角要素に正確に対応する平坦化1次元ベクトルがあります。numpy/scipy:1dベクトルの要素を持つ配列の上三角形を埋める?

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++ 

をしかし、scipyのダウンロード/ numpyの操作でこれを行う方法がなければなりません。

+0

あなたは[ 'np.triu_indices'](HTTPSを使用して、上の三角形に対応するインデックスを取得することができます://ドキュメント.scipy.org/doc/numpy/reference/generated/numpy.triu_indices.html)、割り当てをしてください。 – Kasramvd

答えて

3

あなたは、単にtriu_indices()によって返されたインデックスを使用することができ、forループは必要ありません:

import numpy 

data = numpy.arange(6) 
out = numpy.zeros((3, 3)) 
inds = numpy.triu_indices(len(out)) 
out[inds] = data 
関連する問題