多くの配列メソッドは、配列が多次元であるにもかかわらず、単一のインデックスを返します。例えば:
a = rand(2,3)
z = a.argmax()
2 次元の場合、最大要素の行列インデックスを見つけるのは簡単です。
a[z/3, z%3]
しかし、より多くの次元では、面倒になる可能性があります. Numpy/Scipy には、1 つの (折りたたまれた) 次元のインデックスを指定して、複数の次元のインデックスを返す簡単な方法がありますか? ありがとう。
とった!
a = X.argmax()
(i,j) = unravel_index(a, X.shape)
あなたが望むことを行う組み込み関数については知りませんが、これが思いついたところで、私が本当にやりたかったのはこれであることに気付きました:
同じ形状の 2 つの配列 a,b が与えられた場合、a の最大要素と同じ位置 (同じ [i,j,k...] 位置) にある b の要素を見つけます。
このための簡単なnumpyっぽい解決策は次のとおりです。
j = a.flatten().argmax()
corresponding_b_element = b.flatten()[j]
ヴィンス・マルケッティ