2014-02-18 58 views
1

在我寫的一個圖像處理應用程序中,我有一個多維列表data,我需要能夠一次訪問一系列點(比如說一個2×2塊) 。更簡單的方法來操縱二維列表的區域

目前我使用此:

data[x, y] = average 

data[x+1, y] = average 

data[x, y+1] = average 

data[x+1, y+1] = average 

但它的笨重,如果我想擴展到4x4或8x8塊也分別以16個或64行的代碼。

必須有一個更容易,pythonic的方式來操縱二維列表的區域,任何想法?

+1

如果你有一個列表,'數據[x,y]'不應該工作。你使用的是一個numpy的'ndarray'嗎? – DSM

回答

2

對於實際的二維表,通過你想要使用的指標迭代:

for x in xrange(low_x, low_x+2): 
    for y in xrange(low_y, low_y+2): 
     data[x][y] = average 

對於NumPy的陣列,使用切片分配:

data[x:x+2, y:y+2] = average 
+0

謝謝,我使用PIL,並沒有意識到這是一個NumPy數組 - 噢! –

+0

我會盡快接受答案 - 從現在起2分鐘 –