<div dir="ltr"><div>As I said, you can sum the values for each pixel so you don't store all the differences, that gets rid of the memory problem, but of course it will still be slow if it's not parallelized:</div><div><br></div><div>vals = np.array([np.sum(np.abs(y - array.flat)) for y in array.flat])</div><div><br></div><div>Note that I didn't check thoroughly if the computation by itself is correct, i.e. you get the correct value in terms of the index definition. One other idea is to avoid some of the computations since you are in fact computing the distances twice (distance from pixel 1 to pixel 2 and vice versa). Also, do you actually need to compute this for the entire raster, shouldn't this be more a moving window approach, so you would restrict the distance computation only to a window around that pixel?</div><div><br></div><div>Anna</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 11, 2022 at 2:09 AM Luca Delucchi <<a href="mailto:lucadeluge@gmail.com">lucadeluge@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, 8 Apr 2022 at 16:33, Anna Petrášová <<a href="mailto:kratochanna@gmail.com" target="_blank">kratochanna@gmail.com</a>> wrote:<br>
><br>
> Hi Luca,<br>
><br>
<br>
Hi Anna,<br>
<br>
> I would say the biggest problem is the memory, I tried to run it and it consumes way too much memory. Maybe you could process the differences from each pixel (compute the sum) as they are computed, not collect it and do it in the end. Otherwise you can significantly speed it up simply with one core by using numpy in a better way:<br>
><br>
> vals = np.array([np.abs(y - array.flat) for y in array.flat])<br>
> ...<br>
> out = np.sum(vals) / number2<br>
><br>
<br>
yes, this work better then my solution, but increasing the number of<br>
pixels I get the process killed. I have 16GB RAM and I was not able to<br>
process 80000 cells....<br>
I tried a few different solutions but the result is always the same.<br>
<br>
-- <br>
ciao<br>
Luca<br>
<br>
<a href="http://www.lucadelu.org" rel="noreferrer" target="_blank">www.lucadelu.org</a><br>
</blockquote></div></div>