32-days composite using LST 8-days Data

I want to make a 32-days composite from 8-days LST data by taking its average value, but I am facing a problem in checking QC-day, the other thing is, due to data gaps (missing DN values) we cannot take its average simply (DN1+DN2+DN3)/3 etc because due to data gaps some value are missing.My problem is when I add all the four images and then divide them by 4 it doesn't give the average values because of missing values. for exp. (2+8+6+0)/4, fourth pixel is missing, how can i exclude the missing values and specify the average of existing values? if someone knows any code/proper method, please share and help me

• You only specified python: Are you loading the 8-day LST composites into numpy arrays and use those for processing? – Kersten Jul 8 '15 at 14:18
• Thanks for your reply, method doesn't matter, I just need to process the data. Any method (procedure/code/tool) is okay. if you have in numpy arrays, please share – Shahid Naeem Jul 9 '15 at 9:25

You specified python, So I am assuming you are familiar how to use GDAL to load the images into numpy arrays. This assumes that you stacked 4 8-day composites into a 3D numpy array, where each layer along the z-axis represents one image (just like if you would stack them as a multilayer image).

import numpy as np

# load your data into a 3D numpy array of the shape(layer, Y, X)
composite8_stack  # this is your image stack, as produced by gdal.ReadAsArray()

no_data = -32768  # insert the NoData value of you images here

composite8_stack[composite8_stack == no_data] = np.NaN  #replace NoData values

# calculate the mean along the z-axis while ignoring NoData values
composite32 = np.nanmean(composite8_stack, axis=0)

The numpy function nanmean along axis=0 (the z-axis, layers) does exactly what you want - calculating the mean only from valid observations. Using this it should be easy to loop through your list of images, read 4 8-day composites at a time and produce the 32-day composite from them.

Reclassify 0 as NoData. If you are using arcpy you need spatial analyst extension.

• Thanks for your reply but its a 16-years data (768 images) sp it is not possible to do it manually, if you have any code/script using any language, please share....... – Shahid Naeem Jul 9 '15 at 9:21

In ARCPY use Cell Statistics, you just need ignore NoData http://desktop.arcgis.com/en/arcmap/10.3/tools/spatial-analyst-toolbox/cell-statistics.htm