簡體   English   中英

用numpy進行多維索引的最佳方法是什么?

[英]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數組在AD上建立索引,這意味着在第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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM