Iterate with binary structure over numpy array to get cell sums

Posted by Curlew on Stack Overflow See other posts from Stack Overflow or by Curlew
Published on 2012-11-19T22:29:55Z Indexed on 2012/11/19 23:01 UTC
Read the original article Hit count: 250

In the package scipy there is the function to define a binary structure (such as a taxicab (2,1) or a chessboard (2,2)).

import numpy
from scipy import ndimage
a = numpy.zeros((6,6), dtype=numpy.int) 
a[1:5, 1:5] = 1;a[3,3] = 0 ; a[2,2] = 2
s = ndimage.generate_binary_structure(2,2) # Binary structure
#.... Calculate Sum of 
result_array = numpy.zeros_like(a)

What i want is to iterate over all cells of this array with the given structure s. Then i want to append a function to the current cell value indexed in a empty array (example function sum), which uses the values of all cells in the binary structure.

For example:

array([[0, 0, 0, 0, 0, 0],
    [0, 1, 1, 1, 1, 0],
    [0, 1, 2, 1, 1, 0],
    [0, 1, 1, 0, 1, 0],
    [0, 1, 1, 1, 1, 0],
    [0, 0, 0, 0, 0, 0]])

# The array a. The value in cell 1,2 is currently one. Given the structure s and an example function such as sum the value in the resulting array (result_array) becomes 7 (or 6 if the current cell value is excluded).

Someone got an idea?

© Stack Overflow or respective owner

Related posts about python

Related posts about multidimensional-array