[Numpy-discussion] Help making better use of numpy array functions
mdekauwe
mdekauwe@gmail....
Thu Nov 26 05:53:02 CST 2009
Thanks...I have adopted that and as you said it is a lot neater! Though I
need to keep the pixel count for a weighting in another piece of code so
have amended your logic slightly.
#!/usr/bin/env python
import sys, os, glob
import numpy as np
def averageEightDays(filenamesList, numrows, numcols, year):
doy = 122
nodatavalue = -999.0
for fchunk in filenamesList:
# fill with nodata values, in case there are less than 8 days
data8days = np.zeros((8, numrows, numcols), dtype=np.float32) * -999.0
pixCount = np.zeros((numrows, numcols), dtype=np.int)
avg8days = np.zeros((numrows, numcols), dtype=np.float32)
for day in xrange(len(fchunk)):
f = fchunk[day]
data8days[day] = np.fromfile(f, dtype=np.float32).reshape(numrows,
numcols)
avg8days = np.where(data8days[day] > nodatavalue,
avg8days+data8days[day], avg8days)
pixCount = np.where(data8days[day] > nodatavalue, pixCount+1, pixCount)
avg8days = np.where(pixCount > 0, avg8days / np.float32(pixCount), -999.0)
doy += 8
print year,':',doy
outfile = "lst_8day1030am_" + str(year) + str(doy) + ".gra"
write_outputs(outfile, avg8days)
outfile = "pixelcount_8day1030am_" + str(year) + str(doy) + ".gra"
write_outputs(outfile, pixCount)
def write_outputs(outfile, data):
opath = "/users/eow/mgdk/research/HOFF_plots/LST/tmp"
try:
of = open(os.path.join(opath, outfile), 'wb')
except IOError:
print "Cannot open outfile for write", outfile
sys.exit(1)
# empty stuff
data.tofile(of)
of.close()
if __name__ == "__main__":
numrows = 332
numcols = 667
path = "/users/eow/mgdk/research/HOFF_plots/LST/gridded_03/"
files = 'lst_scr_2006*.gra'
filenames = glob.glob(os.path.join(path, files))
filenames.sort()
filenamesList = [filenames[n:n+8] for n in xrange(0, len(filenames), 8)]
averageEightDays(filenamesList, numrows, numcols, year=2006)
files = 'lst_scr_2007*.gra'
filenames = glob.glob(os.path.join(path, files))
filenames.sort()
filenamesList = [filenames[n:n+8] for n in xrange(0, len(filenames), 8)]
averageEightDays(filenamesList, numrows, numcols, year=2007)
--
View this message in context: http://old.nabble.com/Help-making-better-use-of-numpy-array-functions-tp26503657p26528176.html
Sent from the Numpy-discussion mailing list archive at Nabble.com.
More information about the NumPy-Discussion
mailing list