14

私は4次元配列を持っていdata.shape = (20,30,33,288)ます。nに最も近い配列のインデックスを使用して見つけています

index = abs(data - n).argmin(axis = 1), so
index.shape = (20,33,288) with the indices varying. 

data[index] = "values"で使用したいのですが、 「インデックス(8)が範囲外(0 <=インデックス<1)の次元0」というエラーvalues.shape = (20,33,288)が返されます。そうしないと、この操作の計算に比較的長い時間がかかり、次のような形状のマトリックスが返されます。意味がないようです。data[index]

正しい値の配列を返すにはどうすればよいですか?すなわち、

data[index] = "values" with values.shape = (20,33,288)

これは単純な問題のようですが、簡単な答えはありますか?

最終的にはを見つけたいindex2 = abs(data - n2).argmin(axis = 1)ので、変数をループすることなく、インデックスのデータをインデックス2のデータに合計するなどの操作を実行できます。これは可能ですか?

私はpython2.7とnumpyバージョン1.5.1を使用しています。

4

2 に答える 2

15

index次を使用して、インデックス付けされた最大値にアクセスできるはずですnumpy.indices()

x, z, t = numpy.indices(index.shape)
data[x, index, z, t]
于 2011-04-27T10:05:02.797 に答える
1

私があなたを正しく理解していれば、これはうまくいくはずです:

numpy.put(data, index, values)

今日は何か新しいことを学びました、ありがとう。

于 2011-04-27T03:24:49.627 に答える