4

多くの配列メソッドは、配列が多次元であるにもかかわらず、単一のインデックスを返します。例えば:

a = rand(2,3)
z = a.argmax()

2 次元の場合、最大要素の行列インデックスを見つけるのは簡単です。

a[z/3, z%3]

しかし、より多くの次元では、面倒になる可能性があります. Numpy/Scipy には、1 つの (折りたたまれた) 次元のインデックスを指定して、複数の次元のインデックスを返す簡単な方法がありますか? ありがとう。

4

2 に答える 2

6

とった!

a = X.argmax()
(i,j) = unravel_index(a, X.shape)
于 2010-01-15T17:39:17.507 に答える
1

あなたが望むことを行う組み込み関数については知りませんが、これが思いついたところで、私が本当にやりたかったのはこれであることに気付きました:

同じ形状の 2 つの配列 a,b が与えられた場合、a の最大要素と同じ位置 (同じ [i,j,k...] 位置) にある b の要素を見つけます。

このための簡単なnumpyっぽい解決策は次のとおりです。

j = a.flatten().argmax()
corresponding_b_element = b.flatten()[j]

ヴィンス・マルケッティ

于 2010-01-15T17:40:09.807 に答える