@@ -324,6 +324,7 @@ def reproject_and_coadd(
324324
325325 if combine_function in ("mean" , "sum" ):
326326 if match_background :
327+ # if we're not matching the background, this part has already been done
327328 for array in arrays :
328329 # By default, values outside of the footprint are set to NaN
329330 # but we set these to 0 here to avoid getting NaNs in the
@@ -338,27 +339,28 @@ def reproject_and_coadd(
338339 output_array /= output_footprint
339340
340341 elif combine_function in ("first" , "last" , "min" , "max" ):
341- for array in arrays :
342- if combine_function == "first" :
343- mask = output_footprint [array .view_in_original_array ] == 0
344- elif combine_function == "last" :
345- mask = array .footprint > 0
346- elif combine_function == "min" :
347- mask = (array .footprint > 0 ) & (
348- array .array < output_array [array .view_in_original_array ]
342+ if match_background :
343+ for array in arrays :
344+ if combine_function == "first" :
345+ mask = output_footprint [array .view_in_original_array ] == 0
346+ elif combine_function == "last" :
347+ mask = array .footprint > 0
348+ elif combine_function == "min" :
349+ mask = (array .footprint > 0 ) & (
350+ array .array < output_array [array .view_in_original_array ]
351+ )
352+ elif combine_function == "max" :
353+ mask = (array .footprint > 0 ) & (
354+ array .array > output_array [array .view_in_original_array ]
355+ )
356+
357+ output_footprint [array .view_in_original_array ] = np .where (
358+ mask , array .footprint , output_footprint [array .view_in_original_array ]
349359 )
350- elif combine_function == "max" :
351- mask = (array .footprint > 0 ) & (
352- array .array > output_array [array .view_in_original_array ]
360+ output_array [array .view_in_original_array ] = np .where (
361+ mask , array .array , output_array [array .view_in_original_array ]
353362 )
354363
355- output_footprint [array .view_in_original_array ] = np .where (
356- mask , array .footprint , output_footprint [array .view_in_original_array ]
357- )
358- output_array [array .view_in_original_array ] = np .where (
359- mask , array .array , output_array [array .view_in_original_array ]
360- )
361-
362364 elif combine_function == "median" :
363365 # Here we need to operate in chunks since we could otherwise run
364366 # into memory issues
0 commit comments