python-xarray 相关问题

xarray(以前称为xray)是一个开源库,提供一系列N维数据结构。

Pandas 数据框:跨年份分组

在 Pandas 中,当时间戳的其余部分相同时,是否有一个 groupby 操作来对多年的值进行分组? 例如 12:00:00 01/01/2000、12:00:00 01/01/2001 和 12:00:00 01/01/2...

回答 4 投票 0

如何在Python中显示一个变量的所有数据?

我有一个名为“sum”的变量,其中包含以下信息: sum (时间、纬度、经度)float32 dask.array 如何显示该变量的所有数据...

回答 1 投票 0

将xarray中的变量从一个crs旋转到另一个crs

我有两个 xarray 数据集,每个数据集都有自己的旋转极点 crs。我需要从一个数据集中插入一个变量并将其添加到另一个数据集中。 每个数据集都有 rlat/rlon 的暗淡/坐标,以及...

回答 1 投票 0

Python dask ValueError:无法识别的块管理器 dask - 必须是以下之一:[]

我正在使用 xarray 使用 xarray.open_mfdataset 连接多个 netcdf 文件。但是,当我尝试运行我的代码时,出现以下错误: -----------------------------------------------------------...

回答 1 投票 0

XArray 将函数应用于坐标

如何通过对 XArray 数据集的坐标值应用函数来创建数据数组? 前任。 ds = xr. 数据集( 坐标={ “x”:[1.5,4,2], 'y': [2, -3, -1], ...

回答 1 投票 0

将 Xarray 数据集重新采样到更高的空间分辨率?

这感觉应该是一个已知解决方案的简单问题,但很难弄清楚。 我在常规网格上有一个 2D xarray 数据集(带有纬度/经度)。我想增加

回答 1 投票 0

为什么访问 xarray 中的值这么慢?

我需要访问一堆历史天气数据并使用ERA5数据集(> 1 Mio。特定位置点在特定时间戳)。 我通过下载的 GRIB 文件和 xarray 访问它...

回答 2 投票 0

如何提高大型 .nc 文件(70GB-350GB)的文件读取时间?

我正在使用 ERA5 大气数据以最大空间和时间分辨率计算全球任何地方的风速。这会产生一个包含一年数据的未压缩 70GB 文件,...

回答 1 投票 0

寻求在 3D 网格数据集上处理 1d 线性插值

这是先前问题的后续问题:Implementing 1D interpolation on a 3D Array in Numpy or Xarray Tsoil 是一个 3D xarray 数据集,具有以下维度: 这是先前问题的后续问题:Implementing 1D interpolation on a 3D Array in Numpy or Xarray Tsoil 是一个 3D xarray 数据集,具有以下维度: <xarray.DataArray 'Tsoil' (lat: 1200, lon: 7200, depth: 4)> dask.array<xarray-<this-array>, shape=(1200, 7200, 4), dtype=float32, chunksize=(1200, 7200, 4), chunktype=numpy.ndarray> Coordinates: * lat (lat) float64 30.03 30.08 30.13 30.18 ... 89.83 89.88 89.93 89.98 * lon (lon) float64 -180.0 -179.9 -179.9 -179.8 ... 179.9 179.9 180.0 * depth (depth) float64 3.5 17.5 64.0 194.5 这对应于沿纬度/经度网格不同深度的土壤温度,因此最里面的维度恰好是 T 土壤。我想对 Tsoil 进行插值,这样我就可以在 0 厘米到 289 厘米之间每 0.5 厘米获得更精细的土壤温度分辨率,而不是 4 个深度的温度测量。这需要我对 XArray 的最内层维度执行一维插值。 我定义了一个函数,其输入是来自 xarray 数据集的块: import numpy as np import pandas as pd import xarray as xr import scipy import dask.array as da def interp1d_chunk(chunk, new_depths=new_depths, depths=depths): print(chunk) nlat, nlon, _ = chunk.shape new_chunk = np.empty((nlat, nlon, len(new_depths))) for i in range(nlat): for j in range(nlon): f = scipy.interpolate.interp1d(depths,chunk[i, j, :],bounds_error=False,fill_value="extrapolate") new_chunk[i, j, :] = f(new_depths) print(new_chunk) return new_chunk 假设 Tsoil(出于此处的目的)是一个大小为 (4,4,4) 的 3d 数组: test_array = np.asarray([[[ 9.984375 , 9.315826 , 6.753296 , -0.71829224], [ 9.812378 , 9.15155 , 6.6003723 , -0.7545166 ], [ 9.925293 , 9.266205 , 6.729767 , -0.67056274], [ 9.925293 , 9.266205 , 6.729767 , -0.67056274]], [[10.201508 , 9.524597 , 6.9415283 , -0.6557312 ], [ 9.812378 , 9.15155 , 6.6003723 , -0.7545166 ], [10.083374 , 9.394531 , 6.7566833 , -0.7775879 ], [ 9.925293 , 9.266205 , 6.729767 , -0.67056274]], [[10.201508 , 9.524597 , 6.9415283 , -0.6557312 ], [ 9.812378 , 9.15155 , 6.6003723 , -0.7545166 ], [10.083374 , 9.394531 , 6.7566833 , -0.7775879 ], [ 9.925293 , 9.266205 , 6.729767 , -0.67056274]], [[10.201508 , 9.524597 , 6.9415283 , -0.6557312 ], [10.109436 , 9.4236145 , 6.80542 , -0.7413635 ], [10.083374 , 9.394531 , 6.7566833 , -0.7775879 ], [10.083374 , 9.394531 , 6.7566833 , -0.7775879 ]]],dtype=np.float32) test_lats = [60.275, 60.325, 60.375, 60.425] test_lons = [140.75, 140.8, 140.85, 140.9] depths=np.asarray([3.5,17.5,64,194.5]) new_depths = np.arange(0,289.1,0.5) 我将创建一个名为 test_stemp 的虚拟 XArray: test_stemp = xr.DataArray(test_array,'lat':test_lats,'lon':test_lons,'depth' coords={'lat':lats,'lon':lons,'depth':depths}, dims=['lat','lon','depth']).rename('Tsoil').chunk(chunks={lat_var:len(test_lats),lon_var:len(test_lons),'depth':4}) 然后我尝试通过 interp1d_chunk 运行它,并沿 new_depths 进行插值,但似乎该函数传递的块大小为零: stemp_interp = da.map_blocks(interp1d_chunk, chunk=test_stemp, new_depths=new_depths, depths=depths, dtype='float',chunks=(len(test_lats),len(test_lons),len(new_depths))) <xarray.DataArray (lat: 0, lon: 0, depth: 0)> array([], shape=(0, 0, 0), dtype=float32) Coordinates: * lat (lat) float64 * lon (lon) float64 * depth (depth) float64 有人对我的函数或程序可能有什么问题有什么建议吗? 这是预期的行为。 请注意,map_blocks 将尝试通过在输入的 0 维版本上调用 func 来自动确定输出数组类型。如果您预计该函数在 0 维数组上操作时不会成功,请参阅下面的 meta 关键字参数。 https://docs.dask.org/en/stable/ generated/dask.array.map_blocks.html 由于 meta 未定义,它会使用 (0, 0, 0) 数组调用您的函数。您可以定义元,或者您可以在这种情况下更改返回值,以便即使前两个轴的长度为零,它也返回一个数组。 def interp1d_chunk(chunk, new_depths, depths): print(chunk) nlat, nlon, _ = chunk.shape new_chunk = np.zeros((nlat, nlon, len(new_depths))) for i in range(nlat): for j in range(nlon): f = scipy.interpolate.interp1d(depths,chunk[i, j, :],bounds_error=False,fill_value="extrapolate") new_chunk[i, j, :] = f(new_depths) print(new_chunk) return new_chunk 请注意,我未缩进 return new_chunk 两个缩进。我认为为了正确性,这也是一个很好的改变 - 在仅插入一组深度值后返回 new_chunk 是没有意义的。 我还将np.empty()更改为np.zeros()。虽然 np.empty() 可以更快,但它 也会导致您使用未初始化的内存。通常不值得为获得不确定的结果而烦恼。 最后,请注意此计算是惰性计算。在您调用 stemp_interp.compute() 之前,它实际上不会进行插值。

回答 1 投票 0

在 xarray 数据集的子集中设置新值

我有一个xarray数据集,涵盖经度从9到30和54到66。如何将该数据集中的所有变量从特定坐标范围设置为-1? 一旦我执行 df.isel 或 df.iloc 或 df.sel...

回答 1 投票 0

如何用二维中最接近的非 NaN 值填充 NaN

我试图用最接近的值填充二维xarray(lat,lon)中的NaN。 我有以下示例代码,其中应用了陆地-海洋掩模。然后我想填满海洋...

回答 2 投票 0

合并/展平 xarray.Dataset 列表

我循环了几个多维 NetCDF 文件,使用 xarray 函数提取感兴趣的变量,并将输出存储为 xarray.core.dataset.Dataset 列表。我对x不熟悉...

回答 1 投票 0

将 xarray.Dataset 列表合并/展平为单个 xarray 可读的 netcdf 格式

我循环了几个多维 NetCDF 文件,使用 xarray 函数提取感兴趣的变量,并将输出存储为 xarray.core.dataset.Dataset 列表。我对x不熟悉...

回答 1 投票 0

使用 python xarray 创建一个空的 netCDF4 char 变量

我想创建一个 netCDF 文件,其中存储多个变量及其关联的坐标,以及一个可用于存储各种投影元数据的空 char 变量。 ...

回答 2 投票 0

通过坐标查找xArray中的元素

我有一个像这样的xArray 测试 = xr.DataArray([[0,1], [1, 2]], dims=['x', 'y'], coords={'x': [5, 6], 'y': [ -7, -8]}) 我想通过坐标获得 1 的位置。 我期待类似的事情

回答 1 投票 0

具有周期性边界条件的 3D 连接组件

我正在尝试识别地球上的连接特征(即球体上的时空)。 cc3d 软件包已经完成了 90% 的工作,但我正在努力处理日期边界(即

回答 1 投票 0

如何将线性回归应用于包含 NaN 的大型多维数组中的每个像素?

我有一个自变量值的 1D 数组 (x_array),它与具有多个时间步长的空间数据的 3D numpy 数组 (y_array) 中的时间步长相匹配。我的实际数据要大得多:300+倍...

回答 5 投票 0

xarray 数据集的两年平均值

我有名为 DataList 的 xarray 数据,其中包含“时间”和“值”变量。 我的目标是从 10 年的数据中得出两年的平均值。一年平均值效果很好,但我运行...

回答 1 投票 0

xarray.Dataset.to_zarr:“附加到现有 Zarr 存储”的文档?

在 xarray.Dataset.to_zarr 的“region”参数的描述中,最后一句指出:有关完整详细信息,请参阅参考文档中的“附加到现有 Zarr 存储”。我没有...

回答 1 投票 0

如何使用分配将新变量添加到Python中的xarray.Dataset,具有相同的时间、纬度、经度维度?

我有一个 xarray.Dataset,如下所示: 打印(ds2) 维度:(时间:46,纬度:360,经度:720) 坐标: * 时间 (time) datetime64[ns] 1976-01-01...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.