python - 更改一个 DataArray 的分辨率以匹配另一个
问题描述
我有两个 DataArrays 要合并到一个 DataSet 中以供后续分析。
DataArrays 具有相同的扩展名但不同的分辨率。如何更改第一个 DataArray 的分辨率以匹配第二个 DataArray 的分辨率(例如使用双线性插值或最近邻)?
这是一个代表:
import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
data1 = np.random.random((37, 33, 8))
da1 = xr.DataArray(data1, dims = ['longitude', 'latitude', 'time'], name='foo1')
data2 = np.random.random((41, 48, 8))
da2 = xr.DataArray(data2, dims = ['longitude', 'latitude', 'time'], name='foo2')
# SOME OPERATIONS HERE
ds = xr.merge([da1, da2])
解决方案
我在 xarray 文档(http://xarray.pydata.org/en/stable/interpolation.html)中找到了一个非常有用的示例,它表明使用 interp() 可以像这样
import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
data1 = np.random.random((37, 33, 8))
da1 = xr.DataArray(data1, dims = ['longitude', 'latitude', 'time'], name='foo1')
data2 = np.random.random((41, 48, 8))
da2 = xr.DataArray(data2, dims = ['longitude', 'latitude', 'time'], name='foo2')
# Interpolate da1 to match da2 resolution
new_lon = np.linspace(da1.longitude[0], da1.longitude[-1], da2.sizes['longitude'])
new_lat = np.linspace(da1.latitude[0], da1.latitude[-1], da2.sizes['latitude'])
da1_interpolated = da1.interp(latitude = new_lat, longitude = new_lon)
da1_interpolated
# Merge DataArrays into DataSet
ds = xr.merge([da1_interpolated, da2])
推荐阅读
- testng - 使用带有 Testng 的 Android Studio 或任何其他工具在 Appium 中生成通过/失败自动化报告
- symfony - ArrayCollection 而不是 Entity
- python - 如何为加密设置正确的数据类型块大小
- html - 在 Laravel 刀片中生成的 PDF 中未显示字体真棒图标
- curl - 如何完成对 OTRS 5.0 的 CURL 请求?
- java - 如何在kotlin koin中注入抽象类使用接口
- r - 更改单元格值的标签但保留其颜色
- encryption - MD5 公钥-私钥加密 (python)
- sql - 使用“组标题”动态分组
- android - 我想点击锁屏数