操纵二维列表区域的较短方式

时间:2014-02-18 17:43:52

标签: python arrays list region

在我正在编写的图像处理应用程序中,我有一个多维列表data,我需要能够同时访问一系列点(例如2x2块)。

目前我正在使用它:

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 个答案:

答案 0 :(得分:2)

对于实际的2D列表,迭代您想要使用的索引:

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