在我正在编写的图像处理应用程序中,我有一个多维列表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的方式来操纵二维列表的区域,任何想法?
答案 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