我希望在一个大的二维DataArray中向上采样值(如下(。有没有类似于np.rerepeat((的xarray工具可以应用于每个维度(x和y(?在下面的例子中,我想复制x和y中的每个数组条目。
import xarray as xr
import numpy as np
x = np.arange(3)
y = np.arange(3)
x_mesh,y_mesh = np.meshgrid(x, y)
arr = x_mesh*y_mesh
df = xr.DataArray(arr, coords={'x':x, 'y':y}, dims=['x','y'])
所需输入:
array([[0, 0, 0],
[0, 1, 2],
[0, 2, 4]])
期望输出:
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 2, 2],
[0, 0, 1, 1, 2, 2],
[0, 0, 2, 2, 4, 4],
[0, 0, 2, 2, 4, 4]])
我知道xesmf
重新排序工具,但它们似乎比我心目中的应用程序所需的更复杂。
np.kron
有一个简单的解决方案。
>>> arr
array([[0, 0, 0],
[0, 1, 2],
[0, 2, 4]])
>>> np.int_(np.kron(arr, np.ones((2,2))))
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 2, 2],
[0, 0, 1, 1, 2, 2],
[0, 0, 2, 2, 4, 4],
[0, 0, 2, 2, 4, 4]])