簡體   English   中英

從3D numpy數組的最后一個維度中提取值

[英]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.

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