如何插入多维 xarray?
How to interpolate a multidimensional xarray?
我使用 xarray
读取了一个 netCDF
文件。数据集包含 population
年份的 lat
、lon
信息:1975、1990、2000 和 2015。
数据集如下所示,我也提供了它 here:
import xarray as xr
ds = xr.open_dataset('borneo_pop_t.nc')
ds
对于每个像素,鉴于我拥有的数据点的趋势,我希望获得 1975 年至 2000 年之间每年的信息。特别是,我想为缺失的年份生成更多信息和不同层次的人口。
我该怎么做?
可以使用xarray
的插值function。
使用您的变量名,
import pandas as pd
# Create time series of 1x a year data
# (you can use any date range; you can generate pretty much
# any sequence you need with pd.date_range())
dates = pd.date_range('1975-01-01','2015-01-01',freq='1Y')
# Linear interpolation
ds_interp = ds.interp(time=dates)
注意几点:
- 虽然
ds.interp()
支持 scipy.interpolate.interp1d()
所做的一切 - 例如,三次、多项式等插值,但此代码仅生成一个简单的线性插值。查看上面链接的码头以获取示例。
- 这当然不会创建新信息;您仍然只“知道”原始点的人口。请注意插值数据会对您了解给定年份的实际人口数量产生什么影响。
我使用 xarray
读取了一个 netCDF
文件。数据集包含 population
年份的 lat
、lon
信息:1975、1990、2000 和 2015。
数据集如下所示,我也提供了它 here:
import xarray as xr
ds = xr.open_dataset('borneo_pop_t.nc')
ds
对于每个像素,鉴于我拥有的数据点的趋势,我希望获得 1975 年至 2000 年之间每年的信息。特别是,我想为缺失的年份生成更多信息和不同层次的人口。
我该怎么做?
可以使用xarray
的插值function。
使用您的变量名,
import pandas as pd
# Create time series of 1x a year data
# (you can use any date range; you can generate pretty much
# any sequence you need with pd.date_range())
dates = pd.date_range('1975-01-01','2015-01-01',freq='1Y')
# Linear interpolation
ds_interp = ds.interp(time=dates)
注意几点:
- 虽然
ds.interp()
支持scipy.interpolate.interp1d()
所做的一切 - 例如,三次、多项式等插值,但此代码仅生成一个简单的线性插值。查看上面链接的码头以获取示例。 - 这当然不会创建新信息;您仍然只“知道”原始点的人口。请注意插值数据会对您了解给定年份的实际人口数量产生什么影响。