2011-09-12 8 views
0

私はnumpyを使用しており、計算結果を3つのまたは 4次元行列に格納したいとします。次元数の異なるnumpy配列のインデックス付け

result[:, indices, iteration] = some_function() # won't work 

寸法はindicesタプルの長さから理解されている:私はこのような何かをしたいです。 indicesは、たとえば、(6,)または(8, 5)に等しいのであれば、私は通常、私はタプルに座標のすべてを入れて、としてそれを使用したい

result[:, 6, iteration] = some_function() 

または

result[:, 8, 5, iteration] = some_function() 

と同等のものを持ちたいですインデックスがありますが、:の存在により、私はそれを実行できません。

resultのディメンションは、正しいディメンションの前に設定されているため、確認することはできますが、長さはindicesとしてください。これを達成するための方法はありますか?

答えて

2

お試しください。result[(slice(None),) + indices + (iteration,)]

+0

はい、うまくいきました。ありがとうございました! –

1

あなたは、インデックスの長さを知る必要がある場合:

len(indices) 

をしかし、それは、このあなたの質問ですか?

+0

いいえ、私は長さを確認できます。そして、1の場合、result [:、indices [0]、iteration = = ...、または2の場合、結果[:、インデックス[0]、インデックス[1]、反復=しかし、if文を使って長さを調べるのではなく、私の質問の最初の行のようなことをすることができれば、より良いと思います。 –

+0

明示的に書いていなくても、常に "if"があります。 – Louis

+0

私はそれを明示的に書く必要がない限り、大丈夫です。そうすれば、後で条件を追加しなくても後で簡単にさらにディメンションを追加できます。 (私はすでに知っているが、私はそれ以上の次元を追加しません) –