2014-02-18 37 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分钟 –