性能向上のために、for
ループに頼るのではなく、多次元配列を使用して問題を解決しようとしていますが、多次元配列/行列の三角インデックス付けと総和軸の選択
np.newaxis
を使用してさまざまな置換を試みましたが、次の機能を達成できないようです。
問題:
その1)を取るM XのN×N個のアレイはa
と呼ばれ、Mの正方行列のそれぞれについて、その負の値として上三角行列の要素を設定します。
パート2)(N×Nの)M個の各マトリックスのすべての要素を合計し、M個の要素を持つ1Dアレイを返します。この配列をb
としましょう。ここで
ソリューションしようとしました
は、ループを使用して、私のMWP /試みです(作業を行いますが、私はむしろ、完全に配列/マトリックスベースのアプローチ
a = np.array(
[[[ 0, 1],
[ 5, 0]],
[[ 0, 3],
[ 2, 0]]])
パート1を見つけるだろう):
triangular_upper_idx = np.triu_indices_from(a[0])
for i in range(len(a)):
a[i][triangular_upper_idx] *= -1
a
結果:
array([[[ 0, -1],
[ 5, 0]],
[[ 0, -3],
[ 2, 0]]])
パート2):
b = np.zeros(len(a))
for i in range(len(a)):
b[i] = np.sum(a[i])
b
結果:
注意がarray([ 4., -1.])
:私はこのトピック(Triangular indices for multidimensional arrays in numpy)が、溶液で同様の質問を見てきました がループの入れ子になった... I numpyがより効率的で巧妙な配列ベースのソリューションを提供するように感じる?
ご指摘いただければ幸いです。あなたは対角線があまりにも反転させたい場合は
おかげで
パーフェクト感謝を。私は、np.sumがその軸の配列引数を持つことができなかったことを認識しませんでした。それは素晴らしい作品です。 – IanRoberts