I want to use custom window for computing mean and standard deviation using python. The window that I want to use has some values false and True. I just want only to consider the corresponding True value in the sliding window in my computation.
Here is how the sliding window look
[[ True True True True True True True True True True]
[ True True True True True True True True True True]
[ True True True True True True True True True True]
[ True True True False False False False True True True]
[ True True True False False False False True True True]
[ True True True False False False False True True True]
[ True True True False False False False True True True]
[ True True True True True True True True True True]
[ True True True True True True True True True True]
[ True True True True True True True True True True]]
Sliding window will iterate over all rows and columns of images.
Is there a simple way to compute the mean and std using built-in rolling functions in xarray or pandas ?
It could be helpful this built-in
If a BaseIndexer subclass, the window boundaries based on the defined get_window_bounds method. Additional rolling keyword arguments, namely min_periods, center, and closed will be passed to get_window_bounds.
pandas.DataFrame.rolling — pandas 1.4.2 documentation[
^]
What I have tried:
Using loop: it works but too time consuming when you have array 25k*16k
for rows in range(int(S/2),log_intensity.shape[0]-int(S/2)+1):
for cols in range(int(S/2),log_intensity.shape[1]-int(S/2)+1):
M= log_intensity[rows-int(S/2):rows+int(S/2),cols-int(S/2):cols+int(S/2)]
T= log_intensity[rows,cols].values
Mean= M.where(mask==True).mean().values
Std= M.where(mask==True).std().values