2017-01-02 68 views
1

假設我有一個形式爲(B, H, W, C)的輸入numpy數組,並且有一個網格,其格式爲(B, W),y值爲(B, H)向量化批量圖像像素查找numpy陣列

我的目標是使用x和y值來獲取圖像數組的C值。我能夠做到這一點,當B = 1那是當我的形象是(H, W, C)的形式,當x和y的形式(H\W,)的形式,但沒有線索如何擴大到一個單一的numpy數組中包含的圖像批處理。

是否有某種我可以利用的重塑?

假設我有大小(400, 400, 3)的2倍貓的圖像。然後input_img.shape = (2, 400, 400, 3)

我有一個列表x.shape = (2, 400)y.shape = (2, 400)和與想以索引到input_img使得我獲得每個(x_i, y_i)陣列z_i.shape = (C,)共計z.shape = (400, C)

我試圖向量化

for i in range(batch_size): 
    z_i = input_img[i, x[i], y[i]] 
+0

添加樣品的情況下? – Divakar

+0

@Divakar剛剛添加:) –

+0

你能完成迭代代碼嗎?所以,我猜測它會沿着這些方向走:'z_i = input_img [.....]'。我不確定那個「.....」部分,我猜測這部分涉及到x_i和y_i。 – Divakar

回答

2

下面是使用的方法advanced-indexing -

input_img[np.arange(batch_size)[:,None], x, y] 
+0

謝謝,這工作,但它沒有給我預期的結果。我得到了形狀的輸出圖像(2,400,3),所以我缺少一個尺寸(2,400,400,3)。你有什麼線索可以修復代碼來評估(x_i y_i)網格的像素值嗎? –

+0

@KevinZakka嘗試:'input_img [np.arange(batch_size)[:,None,None],x [:,None],y]'? – Divakar

+0

非常感謝! 'input_img [np.arange(batch_size)[:,None,None],y0,x0]'訣竅:) –