> I have 2D array, let's say: `np.random.random((100,100))` and I want to do 
> simple manipulation on each point neighbors, like divide their values by 3.
> 
> So for each array value, x, and it neighbors n:
> 
> n n n    n/3 n/3 n/3
> n x n -> n/3  x  n/3
> n n n    n/3 n/3 n/3
> 
> I searched a bit, and found about scipy ndimage filters, but if I'm not 
> wrong, there is no such function. Of course me being wrong is quite possible, 
> as I did not comprehend whole ndimage module, but I tried generic filter for 
> example and browser other functions.
> 
> Is there better way to make above manipulation, instead using for loop over 
> every array element?

I am not sure I understand the above manipulation... typically neighborhood 
operators take an array element and the its neighborhood and then give a single 
output that becomes the value of the new array at that point. That is, a 3x3 
neighborhood filter would act as a function F(R^{3x3}) -> R. It appears that 
what you're talking about above is a function F(R^{3x3}) -> R^{3x3}. But how is 
this output to map onto the original array positions? Is the function to be 
applied to non-overlapping neighborhoods? Is it to be applied to all 
neighborhoods and then summed at each position to give the output array?

If you can describe the problem in a bit more detail, with perhaps some sample 
input and output for what you desire (and/or with some pseudocode describing 
how it would work in a looping-over-each-element approach), I'm sure folks can 
figure out how best to do this in numpy.

Zach
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to