2016-03-31 16 views
0

私は(x、y、z)次元の行列を扱っており、この行列から多数の値を同時にインデックスしたいと考えています。次元配列からのインデックス付け - numpy/python

ie. if the index A[0,0,0] = 5 

and A[1,1,1] = 10 

A[[1,1,1], [5,5,5]] = [5, 10] 

ただし、このようなインデックスは、行列の巨大な塊を返すようです。

どのように私はこれを達成することができます知っていますか?私はあなたのように、第1の指標として3回51を使用しようとしている

おかげ

答えて

1

高度なインデックスは次のように機能します。

A[I, J, K][n] == A[I[n], J[n], K[n]] 

AIJ、およびKすべての配列を持ちます。これは完全な一般的なルールではありませんが、必要なものに対してルールが単純化するものです。例えば

あなたはoutput[0] == A[0, 0, 0]output[1] == A[1, 1, 1]をしたい場合は、その後、あなたのIJ、およびK配列はnp.array([0, 1])のようになります。リストも機能します:

A[[0, 1], [0, 1], [0, 1]] 
+0

ありがとう!問題が解決しました :) – JB1

1

iはAからのインデックス)を使用する必要率(n、x、y、z)の大きなアレイを有します2番目の次元へのインデックス(再び3回)これは、A[1,5,:]の要素をと3回繰り返すことになります

A = np.random.rand(6,6,6); 
B = A[[1,1,1], [5,5,5]] 
# [[ 0.17135991, 0.80554887, 0.38614418, 0.55439258, 0.66504806, 0.33300839], 
# [ 0.17135991, 0.80554887, 0.38614418, 0.55439258, 0.66504806, 0.33300839], 
# [ 0.17135991, 0.80554887, 0.38614418, 0.55439258, 0.66504806, 0.33300839]] 

B.shape 
# (3, 6) 

代わりに、あなたはあなたの行列の[1,5]ため、各軸を指定したいと思うでしょう。

A[[1,5], [1,5], [1,5]] = [5, 10] 
+0

私は今何しているのですか? – JB1

関連する問題