问题标签 [xarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
744 浏览

python - 将函数应用于一个 df 中的行和另一个 df 中的列的所有组合

这个问题在结构上类似于将行向量和列向量相乘以产生矩阵,然后对结果矩阵的行求和。

除了在行向量中每个元素都有两个值 A 和 B,在列向量中每个元素都有两个值 X 和 Y。并且该操作不是乘法,而是评估 A、B、X 和 Y 的函数。

下面的代码实现了这个目标。但是有没有办法在没有循环和诉诸 iterrows() 的情况下做到这一点?在实际问题中,行向量有数千个元素,列向量可以有数百万个元素。

0 投票
1 回答
659 浏览

python - 将每日时间序列求和为具有 NaN 值阈值的每月时间序列

我有一个从 1979 年 1 月 1 日到 2005 年 12 月 31 日的 3D 时间序列数据矩阵。该矩阵目前为 9862x360x720(日降雨量 x 0.5° 纬度 x 0.5° 经度)。我想将每日降雨量与每月降雨量相加(总共 324 个月),同时还设置一个对 NaN 值求和的阈值。

换句话说,如果特定纬度/经度网格单元格的每日 NaN 值超过 10 个,我想将每月总和单元格标记为 NaN。如果网格单元的每日 NaN 值少于 10 个,我想将剩余的非 NaN 每日值相加并将其用作每月值。

我使用 xarray 库的“重采样”函数取得了成功,但我想不出一种方法来设置 NaN 值的阈值。我读过的所有内容都说使用 sum 或 nansum 函数,但我找不到通过其中任何一个函数设置 NaN 阈值的方法。此时我对任何方法(xarray 或其他)持开放态度。

我可以使用上面的代码将每日数据汇总到每月,但我无法设置 NaN 阈值。每日数据当前存储在 NetCDF 文件中。

0 投票
1 回答
647 浏览

xarray - 如何对具有重复维度的 DataArray 进行转置?

假设我有一个DataArray尺寸(a, b, b)

我怎样才能进行转置,交换最后两个维度的顺序?

结果是

一样da.transpose("a", "b", "b")

我的数据数组包含协方差矩阵,因此最终维度重复是很自然的。

0 投票
1 回答
356 浏览

netcdf - 使用 xarray 在 netCDF 中输出 int32 时间维度

假设我在 xarray 数据集中有如下所示的时间数据:

xarray 的to_netcdf()方法将时间维度输出为 int64:

因为我正在使用不支持 int64 的 THREDDS 服务器,所以我希望这些时间数据是 int32。这可以使用xarray吗?

0 投票
1 回答
376 浏览

xarray - Xarray:在 DataArray/Set 中搜索值

这个 StackOverflow Q/A:在 numpy 数组中查找最近的值

展示了如何在一维 numpy 数组中搜索一个值。在沿坐标搜索的数据中搜索接近目标值的值的 xarray 等价物是什么

所以第一个搜索是找到f1Res最接近目标值 -41.2 的数据集的位置

其次是同时搜索f1Res最接近f2Res目标值 0.1 的位置的结果

第三是搜索最接近 3.15、-2.5 的结果并保持xCoord打开状态yCoordzCoord

0 投票
1 回答
1200 浏览

python - xarray - store strings as 'string' data-type instead of 'char' (n-dimensional character arrays) for Python2.7

I am converting a text file to netCDF format using xarray. When I am using netCDF4 format and Python3, it is storing string variables as strings but when I use Python2 it stores them as n-dimensional character arrays. I have tried to set dtype='str' in encoding and that didn't make any difference. Is there a way to make these variables to have string data-type using Python2? Any thoughts would be appreciated.

Here is my code:

When I do ncdump of the op_file.nc using Python3.6, I get:

And when I use Python2.7, I get:

The sample input file looks like this:

0 投票
0 回答
906 浏览

python - Xarray to_netcdf 非常慢并且在 python 中的大型数据集崩溃

我正在尝试使用 Python 中的 xarray 将降水数据、PET 数据和温度数据从每小时重新采样到每小时 6 小时。在这一步之后,想法是将这三个数据集合并到一个 netCDF4 文件中。在此合并之前,xarray 的执行速度相当快(大约 40 秒),但保存到 netcdf 需要两天时间然后崩溃。数据总计约 25GB。

我看到这个问题经常出现,但我还没有找到任何解决方案..

在此先感谢您的帮助!

在我使用的代码下方:

0 投票
0 回答
49 浏览

python - xarray:平均一维数据数组中的相邻值

我是 xarray (和 python)的新手,因此感谢您的耐心等待!

我有一个长度为 35 的一维数据数组(“p”),我想返回一个数组,其中包含 p 中相邻值的平均值(长度为 34)。但是,当我尝试使用下面显示的简单索引执行此操作时,我返回了一个长度为 33 的数组,它等于 p[1:-1]——这不是我想要的!

我明白发生了什么:xarray 正在使用自动对齐,因此我的二进制操作的结果是坐标标签的交集。解决这个问题的好方法是什么?

干杯,

麦克风

0 投票
1 回答
46 浏览

python - Reindex data variable by different dimensions

I have a dataset that is dimensioned by time and id but it also has lat and lon coordinates.

The data variable is dimensioned by time and id and what I want to do is dimension it by time, lat, and lon. For example:

Result:

The only way I can figure out how to accomplish this is to iterate over the indexes building out a new data array with the correct shape and dimensions:

Result:

But this is very expensive, is there a better way? Basically at each 'time' slice I want a diagonal array that is filled with the values from the original data. It seems like I should be able to construct a view into the original data somehow to accomplish this but I'm at a loss as to how to do it.

0 投票
1 回答
3302 浏览

python - 如何乘以 Python Xarray 数据集?

我正在使用xarray.open_mfdataset()函数读取多个 netCDF 格式的数据文件(WRF 模型输出文件)。我正在阅读和取消各种变量,例如 Variable和QVAPORresp 。我正在使用以下代码来读取 netCDF 变量和计算结果变量。UVUQ

使用上述代码获得的变量的维度和形状:

风变量的维度 Ex。U它的形状是

Times, lev, y, x_2 它的形状是 (1186, lev: 36, y: 699, x_2: 639)

湿度变量的维度 Ex。QVAPOR它的形状是

Times, lev, y, x 它的形状是 (1186, lev: 36, y: 699, x: 639)

乘以U和后QVAPOR;我计算UQ=U*QVAPOR. 的尺寸和形状UQ

Times, lev, y, x_2, x and shape is (Times: 1186, lev: 36, y: 699, x_2: 639, x: 639)

所以问题如下:

我无法获得正确的尺寸。的正确尺寸UQ应该是Times, lev, y, x。任何人都可以帮助我如何将 xarray 数据集与不同的维度名称相乘。我不确定为什么我会得到 5 维的 UQ 变量,而 U 和 QVAPOR 都是 4 维。