[英]Extracting values from last dimension of 3D numpy array
我試圖從值的3D矩陣中提取2d矩陣,其中最后一個維度的值來自3d矩陣的最后一個維度。 例如,如果尺寸為[2,2,3]的P =
[ [[5, 1, 5], [9, 9, 4]], [[0, 9, 8], [8, 6, 8]] ]
為了得到輸出矩陣[[1, 9],[0, 8]]
,索引矩陣是什么?其中1是第一行第一列的第二個元素,9是第一行第二個元素的第二個元素列,0是第二行第一列的第一元素,而8是第二行第二列的第三元素? 想法是,對於每一列,我都有k個不同的分數。 我想為每列檢索一個我知道索引的不同分數。
我對Numpy中的高級索引感到有些困惑,而且我自己也不知道。 謝謝!
我假設有一個索引數組可以索引到最后一個軸。 我們稱之為idx
。 對於問題中具有給定文本的給定樣本,將為-
idx = np.array([[1,0],[0,2]])
具體來說,這是從引用的文本中提取的:
圖1是第一行的第一列的第二元件 ,9是第一行第二列的第一元素 ,0是在第二行第一列的第一元素和圖8是第二行第二列的第三元件
為了解決這個問題,我們將使用帶有np.ogrid
開放式網格來索引輸入數組的前兩個軸-
m,n = idx.shape
I,J = np.ogrid[:m,:n]
out = A[I,J,idx]
樣品運行-
In [57]: A
Out[57]:
array([[[5, 1, 5],
[9, 9, 4]],
[[0, 9, 8],
[8, 6, 8]]])
In [59]: idx = np.array([[1,0],[0,2]])
In [60]: m,n = idx.shape
In [61]: I,J = np.ogrid[:m,:n]
In [62]: A[I,J,idx]
Out[62]:
array([[1, 9],
[0, 8]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.