[英]What is the best way to do multi-dimensional indexing with numpy?
我正在嘗試對3D numpy數組進行索引。 基本上我有一個形狀為(F,A,D)
的數組phi
; 例如(5, 3, 7)
。 生成的示例如下:
F=5; A=3; D=7; phi = np.random.random((F,A,D))
我的目標是使用2 [[0,1,2],[5,5,6]]
類的2D數組在A
和D
上建立索引,這意味着在第3維上采用以0索引的值,在第一位置A
,這些值由1對的第二位置的第三尺寸索引A
等和。 結果應具有(F,A,2)
或(F,2,A)
的形狀。
這等同於手動循環“索引器數組”的所有值,例如:
phi[:,0,0]; phi[:,1,1]; phi[:,2,2]
phi[:,0,5]; phi[:,1,5]; phi[:,2,6]
直觀地講,我會做類似phi[:,:,[[0,1,2],[3,3,3]]]
事情,但是它的形狀最終是(5, 3, 2, 3)
。
關於如何獲得正確結果的任何想法?
我想這就是你想要的
phi[:,range(A),[[0,1,2],[5,5,6]]]
你的嘗試
phi[:,:,[[0,1,2],[5,5,6]]]
對於前兩個維的每個值,沿第三個維取值,因此最終得到的形狀為(5,3,2,3)
。
但是,根據您的示例,您希望第二維不斷增加,這在我的代碼中是通過range(A)
和numpy的廣播來實現的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.