问题标签 [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.
python - 将函数应用于一个 df 中的行和另一个 df 中的列的所有组合
这个问题在结构上类似于将行向量和列向量相乘以产生矩阵,然后对结果矩阵的行求和。
除了在行向量中每个元素都有两个值 A 和 B,在列向量中每个元素都有两个值 X 和 Y。并且该操作不是乘法,而是评估 A、B、X 和 Y 的函数。
下面的代码实现了这个目标。但是有没有办法在没有循环和诉诸 iterrows() 的情况下做到这一点?在实际问题中,行向量有数千个元素,列向量可以有数百万个元素。
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 文件中。
xarray - 如何对具有重复维度的 DataArray 进行转置?
假设我有一个DataArray
尺寸(a, b, b)
:
我怎样才能进行转置,交换最后两个维度的顺序?
结果是
一样da.transpose("a", "b", "b")
。
我的数据数组包含协方差矩阵,因此最终维度重复是很自然的。
netcdf - 使用 xarray 在 netCDF 中输出 int32 时间维度
假设我在 xarray 数据集中有如下所示的时间数据:
xarray 的to_netcdf()
方法将时间维度输出为 int64:
因为我正在使用不支持 int64 的 THREDDS 服务器,所以我希望这些时间数据是 int32。这可以使用xarray吗?
xarray - Xarray:在 DataArray/Set 中搜索值
这个 StackOverflow Q/A:在 numpy 数组中查找最近的值
展示了如何在一维 numpy 数组中搜索一个值。在沿坐标搜索的数据中搜索接近目标值的值的 xarray 等价物是什么
所以第一个搜索是找到f1Res
最接近目标值 -41.2 的数据集的位置
其次是同时搜索f1Res
最接近f2Res
目标值 0.1 的位置的结果
第三是搜索最接近 3.15、-2.5 的结果并保持xCoord
打开状态yCoord
zCoord
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:
python - Xarray to_netcdf 非常慢并且在 python 中的大型数据集崩溃
我正在尝试使用 Python 中的 xarray 将降水数据、PET 数据和温度数据从每小时重新采样到每小时 6 小时。在这一步之后,想法是将这三个数据集合并到一个 netCDF4 文件中。在此合并之前,xarray 的执行速度相当快(大约 40 秒),但保存到 netcdf 需要两天时间然后崩溃。数据总计约 25GB。
我看到这个问题经常出现,但我还没有找到任何解决方案..
在此先感谢您的帮助!
在我使用的代码下方:
python - xarray:平均一维数据数组中的相邻值
我是 xarray (和 python)的新手,因此感谢您的耐心等待!
我有一个长度为 35 的一维数据数组(“p”),我想返回一个数组,其中包含 p 中相邻值的平均值(长度为 34)。但是,当我尝试使用下面显示的简单索引执行此操作时,我返回了一个长度为 33 的数组,它等于 p[1:-1]——这不是我想要的!
我明白发生了什么:xarray 正在使用自动对齐,因此我的二进制操作的结果是坐标标签的交集。解决这个问题的好方法是什么?
干杯,
麦克风
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.
python - 如何乘以 Python Xarray 数据集?
我正在使用xarray.open_mfdataset()
函数读取多个 netCDF 格式的数据文件(WRF 模型输出文件)。我正在阅读和取消各种变量,例如 Variable和QVAPOR
resp 。我正在使用以下代码来读取 netCDF 变量和计算结果变量。U
V
UQ
使用上述代码获得的变量的维度和形状:
风变量的维度 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 维。