2016-03-31 174 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] 

但是,像這樣的索引似乎返回矩陣的巨大塊。

有誰知道我該如何做到這一點?我有一個大數組索引(N,X,Y,Z),我需要使用從A指數)的

感謝

回答

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

您正在嘗試使用1作爲第一指標的3倍和5爲進入第二維的索引(再次三次)。這會給你重複三次的元素

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