我正在處理(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指數)的
感謝
我正在處理(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指數)的
感謝
高級索引是這樣工作的:
A[I, J, K][n] == A[I[n], J[n], K[n]]
與A
,I
,J
,和K
所有陣列。這不是完整的,一般的規則,但這是規則簡化到你所需要的。
例如,如果你想output[0] == A[0, 0, 0]
和output[1] == A[1, 1, 1]
,那麼你I
,J
,和K
陣列應該像np.array([0, 1])
。列表也有效:
A[[0, 1], [0, 1], [0, 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]
我明白我現在在做什麼,謝謝! – JB1
謝謝!問題解決了 :) – JB1