问题标签 [python-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 - 使用底图在 Python 中重新网格化 3-D 卫星数据时出错,2-D 有效
我有以下问题:
我有来自不同卫星的云层数据集,我想将其重新网格化到气候模型的网格上,以便在模型输出和观测到的卫星数据之间进行比较。
现在我正在使用底图中的 interp 函数,它对以下形状的数组非常有效:1 x 经度 x 纬度,但它不适用于形状为 nx 经度 x 纬度的数组。重新排列这些 3-D 数组的最佳方法是什么?
我的问题是,当我尝试使用 3-D 数据时,我收到以下形式的错误消息,在我的情况下,数组的形式为 161(这是每个月的云量!)x lon x lat
这就是它产生的错误:
python - Add 'constant' dimension to xarray Dataset
I have a series of monthly gridded datasets in CSV form. I want to read them, add a few dimensions, and then write to netcdf. I've had great experience using xarray (xray) in the past so thought I'd use if for this task.
I can easily get them into a 2D DataArray with something like:
But when I try to add another dimension, which would convey information about time (all data is from the same year/month), things start to go sour.
I've tried two ways to crack this:
1) expand my input data to m x n x 1, something like:
Then I follow the same steps as above, with coords updated to contain a third dimension.
This is fine for creating a DataArray -- but when I try to convert to a dataset (so I can write to netCDF), I get an error about 'ValueError: Coordinate objects must be 1-dimensional'
2) The second approach I've tried is taking my dataarray, casting it to a dataframe, setting the index to ['lat','lng', 'time'] and then going back to a dataset with xr.Dataset.from_dataframe()
. I've tried this -- but it takes 20+ min before I kill the process.
Does anyone know how I can get a Dataset with a monthly 'time' dimension?
python - Python xarray.concat 然后 xarray.to_netcdf 生成巨大的新文件大小
所以我有 3 个 netcdf4 文件(每个大约 90 MB),我想使用包 xarray 连接它们。每个文件都有一个变量 (dis),以 0.5 度分辨率(纬度、经度)表示 365 天(时间)。我的目标是连接三个文件,使我们有 1095 天(3 年)的时间序列。
每个文件(对于 2007 年、2008 年、2009 年)具有: 1 个变量:dis 3 个坐标:时间、纬度、经度......
我将它们导入并使用 concat 模块进行连接,我认为是成功的。在这种情况下,模块从 filestrF 中读出 3 个 netcdf 文件名
新数据集的新细节现在显示为:
对我来说似乎很好。但是,当我将此数据集写回 netcdf 时,文件大小现在已经爆炸式增长,1 年的数据似乎相当于 700 MB。
- 对于 2 个串联文件,~1.5 GB
- 对于 3 ,, ,, 2.2 GB
- 对于 4 ,, ,, 2.9 GB
我本来期望 3 x 90 MB = 270 MB - 因为我们在一维(时间)上缩放(3x)。变量、dis 和其他维度 lat 和 lon 的大小保持不变。
任何想法请为巨大的高档尺寸?我已经测试了在没有连接的情况下读入和写回文件,并且在没有增加大小的情况下成功地做到了这一点。
python - python xarray concat groupby在datetime64维度中
我有一个 xarray 数据集,它是:
dis 变量中有 nans,但整个数组不是 nans。维度时间长度对应10年的每日数据(3652天)。
我想要做的是获得 10 年时间序列的每月平均值,每个月和每个网格正方形(纬度,经度)。所以输出数据集将是:
我看到的一个选项几乎可以满足我的要求:
然而,它的输出只是一个 12 项数组。即我们失去了纬度和经度维度。
我认为使用 datetime64 方法可能有一些简单的方法可以做到这一点,但我一直在努力充分理解它们。
唉,在写这篇文章时,我已经做到了:
这使:
但是,是否有另一种更符合使用 groupby 的第一行代码的 Pythonic 方式?
谢谢
python - 使用 Python xarray 使用“where”进行屏蔽不再起作用
更新后我遇到了麻烦xarray
。
我有一个盐度数据集,其尺寸为:
对于特定站点,我想获得所选深度的盐度,例如 -10 m。维度层包含随时间变化的深度值,即,给定层包含随时间变化的不同深度值(由于水位变化)。
以前我在做以下事情:
这工作得很好。
但是现在我收到了这个错误:
有人知道这里发生了什么吗?
或者有没有更聪明的方法来分割我的数据集?
我使用的 xarray 版本是:
xarray 0.7.2
系统版本:
编辑:添加的数据集详细信息
python - 使用 matplotlib 在一个图形上绘制四个箱线图
所以我有多个数据文件,所有这些文件我都使用数据框来轻松处理信息。所有文件都是 NetCDF 文件。我试图在同一个数字上绘制 4 个箱线图,以便它们都可以很容易地进行比较(我正在研究同一时间选择的平均值如何在不同时间达到峰值)。它们将具有不同的 X 和 Y 值,因为这是在略微不同的时间间隔内获取的观测数据,并且不同的变量数对应于不同的时间相关变量。
我一直在尝试使用子图来使用 matplotlib 实现这一点,但它只是吐出三个空图。我怎样才能做到这一点?
这是代码:
究竟是什么没有发生?
好的,现在,我对其进行了编辑,使其如下所示:
现在,我得到了五个带有五个数字的窗口。占据整个窗口的一个图形具有应该在四个子图中的所有数据,而其他四个图形在我想要的位置各有一个子图,但为空。
python - 在 Python 中加载 grib2 文件
我正在尝试加载 grib2 文件,但我不确定这些文件是否是问题所在,或者我尝试加载它们的方式。
这些文件是从这里提取的(我没有从这里下载它们,而是从一个从这里获取它们的同事的文件夹中复制它们 - 所以它们实际上应该是相同的文件......,但我也尝试插入ftp 地址并得到相同的错误)。
我累了pygrib
得到这个错误:
我试过了xarray
我得到这个错误
我直接试了NIO
我得到与来自的错误相同的错误xarray
。
有什么建议吗?
python - 了解 xarray groupby
我正在尝试计算每个组中的成员数量,类似于pandas.DataFrame.groupby.count
. 但是,它似乎不起作用。这是一个例子:
但是,我希望这个输出:
这是怎么回事?
换句话说:
python - Python:计算列表列表中的元素数量并提供给矩阵?
给定一个列表列表,其中每个列表的长度
我想计算一个元素的重复次数并将其输入一个单独的矩阵。
让我们将每个列表称为 a frame
,将框架中的元素称为states
。
这是我的代码,它工作正常:
在我的例子中,列表M
有28,800 lists
,其中每个列表包含 75 个元素(0 到 499 之间的数字)。
这使得矩阵的大小为 500X 28,800。代码需要 30 分钟(大约)才能完成,我相信问题出在for
循环中。
有没有什么有效的方法来编写它,以便代码可以更快地执行?
python - 将 3 维 xr.DataArray (Xarray)展平/拉开/折叠成沿轴的 2 维?
我有一个数据集,我在其中存储不同类/子类型的副本(不知道该怎么称呼它),然后是每个类/子类型的属性。本质上,有 5 个子类型/类,每个子类型/类有 4 个重复,以及 100 个被测量的属性。
是否有类似np.ravel
或np.flatten
可以使用合并二维的方法Xarray
?
在此,我想合并暗淡subtype
,replicates
所以我有一个 2D 数组(或pd.DataFrame
带有attributes vs. subtype/replicates
.
它不需要具有“coord_1 | coord_2”或任何格式。如果它保留原始坐标名称将很有用。也许有类似的东西groupby
可以做到这一点?Groupby
总是让我感到困惑,所以如果它是原生的东西xarray
,那就太棒了。