Say the matrix `A`

has `R`

rows and `C`

columns.

At some point `(r, c)`

, we look at all possible neighbors `(nr, nc)`

; there are `size`

of them with sum `value`

. A neighbor is actually in the matrix if `0 <= nr < R and 0 <= nc < C`

. We want the total sum value, divided (with integer division) by the number of neighbors.

```
def imageSmoother(self, A):
R, C = len(A), len(A[0])
ans = [[0] * C for _ in A]
for r in xrange(R):
for c in xrange(C):
value = size = 0
for nr in (r-1, r, r+1):
for nc in (c-1, c, c+1):
if 0 <= nr < R and 0 <= nc < C:
value += A[nr][nc]
size += 1
ans[r][c] = value // size
return ans
```