2

上三角行列の各エントリで関数を呼び出したいと思います。for ループの厄介な入れ子を避けるために、numpy.triu_indices 関数を使用しています。私の機能は機能しますが、インデックス作成を実装するためのよりクリーンな方法があるかどうかを知りたいです。

import numpy as np
def weighted_edges(adjmat):
    indices = np.triu_indices(len(adjmat))
    return ((x, y, adjmat[x,y]) for (x,y) in zip(indices[0], indices[1]))

zip 呼び出しで index[i] を参照する必要なく、これを実装する方法があると思います。本当にそうする方法はありますか?

4

1 に答える 1

2

N x N上三角値が必要な行列がある場合は、次のようにします。

import numpy as np
N = 5
x = np.arange(N**2).reshape(N, N)
upper = x[np.triu_indices(N, 0)]

k三角形の値を列ごとに主対角線からオフセットしたい場合は、次のようにします。

upper = x[np.triu_indices(N, k)]
于 2013-06-28T16:12:05.583 に答える