Question

In an image processing app I am writing, I have a multidimensional list, data, and I need to be able to access a range of points (say a 2x2 block) at once.

At the moment I am using this:

data[x, y] = average

data[x+1, y] = average

data[x, y+1] = average

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

But it's clunky, and if I wanted to expand to a 4x4 or 8x8 block it take 16 or 64 lines of code respectively.

There must be an easier, pythonic way to manipulate regions of a two dimensional list, any ideas?

Was it helpful?

Solution

For an actual 2D list, iterate through the indices you want to use:

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

For a NumPy array, use a slice assignment:

data[x:x+2, y:y+2] = average
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top