- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有11年(2007年至2017年)的每日温度文件。总共有 11*365 = 4015
NetCDF 文件。每个文件包含纬度 (100,)
、经度 (360,)
维度以及大小为 (360, 100)
的温度变量。我想找到每个网格点的 15 天运行(移动)平均值,忽略 NaN
值(如果存在)。这意味着需要使用 15 个文件来查找平均值。我有以下函数可以从文件夹中读取所有日常文件。例如files_list[0:15]
、files_list[1:16]
、files_list[2:17]....
、 的平均值需要找到>files_list[4000:]
。每个文件都意味着需要保存为新的 NetCDF 文件。我有一个创建 NetCDF 文件的想法。但找不到运行或移动平均线。
这是我的代码:
def files_list (working_dir, extension):
'''
input = working directory and extension of file(eg. *.nc)
outout = returns the list of files in the folder
'''
file_full_path = os.path.join(working_dir)
os.chdir(working_dir)
files = glob.glob(os.path.join(file_full_path,extension))
files = natsort.natsorted(files)
files_list= [] #Empty lsit of files
j = 0
for j in range(0,len(files)):
files_list.append(os.path.basename(files[j])) #appending each files in a directory to file list
return files_list
最佳答案
这不是 python 中的解决方案,但如果您的文件名为 file_20061105.nc 等,您可以从命令行将它们与 cdo(气候数据运算符)合并,然后使用 runmean 函数
cdo mergetime file_*.nc merged_file.nc
cdo runmean,15 merged_file.nc runmean.nc
在某些系统上,您可以打开的文件数量有限制,在这种情况下,您可能需要首先一次合并文件一年
for year in {2007..2017} ; do
cdo mergetime file_${year}????.nc merged_${year}.nc
done
cdo mergetime merged_????.nc merged_file.nc
cdo runmean,15 merged_file.nc runmean.nc
只是作为从命令行快速执行此操作的另一种方法。
如果你想在 python 程序中执行此任务,那么你可以首先以这种方式将文件合并为一个文件(或者在 python 中循环文件并将它们读入单个 100x360x4000 的 numpy 数组),然后在 python 中执行运行平均值,这里已经有一个有关此任务的 stackoverflow 问题:
关于python - 如何从多个每日文件中获取运行或移动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55370370/
我是一名优秀的程序员,十分优秀!