python时间序列进行线性插值_python中时间序列的二维网格插值

我正在处理来自netCDF文件的气候数据。来自不同模型的数据具有不同的分辨率-因此,有必要将模型“重新划分”为一个共同的网格分辨率。数据是三维的(时间、纬度、经度)。为了重新生成网格,我在每个时间步将旧网格线性插值到新网格上。在

我正在寻找一种方法来提高在每个时间步中循环的进程的效率,因为scipy.interpolate.interp2d一次只能处理两个维度。在

有没有什么方法可以有效地在时间序列的两个维度上进行线性重磨/插值,而不需要执行for循环(如下所示)?在import numpy as np

import xarray as xr

#create xarray DataArray to establish resolution we want to regrid to.

ref_lat = np.linspace(-90,89,180)

ref_lon = np.linspace(0,359,360)

ref_grid = xr.DataArray(np.zeros((180,360)),coords=[('lat',ref_lat),('lon',ref_lon)])

x_new = ref_grid.lon

y_new = ref_grid.lat

#original files and dimension

x_old = original_DataArray.lon

y_old = original_DataArray.lat

z_old = original_file #3-D memmap

fout = np.memmap('file_out',dtype='float32',mode='w+',shape=original_file.shape)

#any way to optimize this part??

for t in range(0,original_file.shape[0]):

f = interpolate.interp2d(x_old,y_old,z_old[t,:,:])

fout[t,:,:] = f(x_new,y_new)

fout.flush()

*注意:我使用numpy memmaps将文件写入磁盘或从磁盘写入,因为它们通常非常大,需要在内存中处理,而xarray dataarray用于处理netCDF文件。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值