Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python中的每日netcdf文件计算月平均值_Python_Numpy_Netcdf - Fatal编程技术网

从python中的每日netcdf文件计算月平均值

从python中的每日netcdf文件计算月平均值,python,numpy,netcdf,Python,Numpy,Netcdf,您好,我有一个netcdf文件,包含每日数据。文件的形状为(5844,89,89),即16年数据。我试图从每日数据中得到月平均值。我正在寻找类似于熊猫数据帧中的重采样功能。在python中有任何方法可以做到这一点。 正如我所知,使用cdo和nco进行计算非常容易,但我正在研究python 我用来读取netcdf文件的示例代码是: import netCDF4 from netCDF4 import Dataset fh = Dataset(ncfile, mode='r') time = fh.

您好,我有一个netcdf文件,包含每日数据。文件的形状为(5844,89,89),即16年数据。我试图从每日数据中得到月平均值。我正在寻找类似于熊猫数据帧中的
重采样
功能。在python中有任何方法可以做到这一点。 正如我所知,使用cdo和nco进行计算非常容易,但我正在研究python

我用来读取netcdf文件的示例代码是:

import netCDF4
from netCDF4 import Dataset
fh = Dataset(ncfile, mode='r')
time = fh.variables['time'][:]
lon = fh.variables['longitude'][:]
lat = fh.variables['latitude'][:]
data = fh.variables['t2m'][:]
data.shape

@贾曼:谢谢你的建议。这比我想象的要简单,我的问题的答案是:

import xarray as xr
ds = xr.open_dataset(nc_file)
monthly_data = ds.resample(freq = 'm', dim = 'time', how = 'mean')

通过新版本的xarray,其用法简单得多,如下所示

monthly_data=ds.resample(time='m').mean()

如果您在Linux或macOS中工作,那么可以使用nctoolkit轻松完成这项工作,nctoolkit使用CDO作为后端。(安装说明)

如果你想得到月平均值,你只需要以下信息:

import nctoolkit as nc
data = nc.open_data(ncfile)
data.tmean(["year", "month"])
这可以绘制为:

data.plot()
如果要将其转换为数据帧:

df = data.to_dataframe()

查看xarray中的重采样功能。它建立在熊猫重采样工具之上: