问题标签 [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.

0 投票
2 回答
1607 浏览

python - 在 xarray 中导入和解码数据集以避免冲突 _FillValue 和 missing_value

使用 xarray open_dataset 或 open_mfdataset 加载 NARR netcdf 数据集(例如ftp://ftp.cdc.noaa.gov/Datasets/NARR/monolevel/air.2m.2010.nc)时,xarray 返回有关“冲突 _FillValue 和缺失值”。

输入:

ds = xarray.open_dataset('air.2m.2010.nc')

产生此错误:

ValueError: ('Discovered conflicting _FillValue and missing_value. Considering opening the offending dataset using decode_cf=False, corrected the attributes', 'and decoding explicitly using xray.conventions.decode_cf(ds)')

使用建议打开时:

ds = xarray.open_dataset('air.2m.2010.nc',decode_cf=False),

数据集已打开,但变量、时间、坐标等未解码(显然)。由于遇到相同的错误,使用xarray.decode_cf(ds)显式似乎无助于成功解码数据集。

我相信这个错误的出现是因为 NARR 数据集是一个 Lambert Conformal 并且由于网格的形状而存在一些缺失值,因为它是由 xarray 打开的,并且由于某种原因,这与填充值冲突。

在 xarray 中打开和解码此文件的最佳方法是什么?

注意我已经能够使用 netcdf4-python 打开和解码,但希望能够在 xarray 中执行此操作,以利用 dask 提供的核心计算功能。

0 投票
3 回答
8412 浏览

python - 加快在python中读取非常大的netcdf文件

我有一个非常大的 netCDF 文件,我正在使用 python 中的 netCDF4 读取它

我不能一次全部读取这个文件,因为它的尺寸(1200 x 720 x 1440)对于整个文件来说太大而无法一次在内存中。第 1 个维度代表时间,接下来的 2 个维度分别代表纬度和经度。

然而,一次读一年是极其缓慢的。对于以下用例,我如何加快速度?

- 编辑

块大小为 1

  1. 我可以读取一系列年份:nc_file.variables[variable_name][0:100, :, :]

  2. 有几个用例:

    以年为单位:

    /li>


0 投票
2 回答
388 浏览

python - 将 xarray 变量与 2D numpy 数组相乘时的值错误

我收到此错误:

以下是 2 个数组的形状:

我该如何解决这个错误?

0 投票
1 回答
583 浏览

python - xarray乘法运算后数组的形状不正确

根据将 xarray 变量与 2D numpy 数组相乘时的值错误

这是输入数组的形状

这是相乘后的数组形状:

我希望生成的数组具有与 flow_data 相同的形状。我该怎么做呢?

0 投票
2 回答
6658 浏览

python - 在 xarray (Python) 中替换数据集坐标

我有一个以 NetCDF4 格式存储的数据集,其中包含Intensity3 个维度的值LoopDelayWavelength. 我将我的坐标命名为与尺寸相同(我不知道它是好是坏......)

我在 Python 中使用xarray(以前称为 xray)来加载数据集:

现在我想在跟踪原始数据的同时操作数据。例如,我会:

  1. Delay对坐标应用偏移量并保持原始Delay数据数组不变。这似乎是通过以下方式完成的:

    ds_ = ds.assign_coords(Delay_corr=ds_.Delay.copy(deep=True) + 25)

  2. 替换数据集中所有相关数据数组的坐标DelayDelay_corr但是,我不知道如何执行此操作,也没有在文档中找到任何内容。

有人知道如何执行第 2 项吗?

下载带有测试数据的 NetCDF4 文件:http: //1drv.ms/1QHQTRy

0 投票
2 回答
3924 浏览

python - 如何合并具有冲突坐标的 xArray 数据集

假设我有两个数据集,每个数据集都包含不同的感兴趣变量和不完整(但不冲突)的索引:

这会创建两个看起来应该很好合并的数据集:

但他们没有 - 尝试ages.merge(heights)导致ValueError

删除坐标kid_names可以解决问题:

似乎坐标正在被处理DataArrays,因为任何不相同的值都会引发错误。但是它们不应该更像基本坐标那样处理,例如扩展到两个索引的超集吗?还是我应该做其他手术?

我在 python 3.5 上使用 xarray 0.7.2 和 numpy 1.10.4

0 投票
1 回答
788 浏览

python - Xarray 如何绘制条形图?

如何从 Python Xarray 数据集(例如雨数据轴)绘制条形图?

我已经在使用此代码来调整绘图的大小

0 投票
3 回答
1602 浏览

python - python中时间序列的二维网格插值

我正在处理来自 netCDF 文件的气候数据。来自不同模型的数据具有不同的分辨率——因此,有必要将模型“重新网格化”为通用网格分辨率。数据是 3-D(时间、纬度、经度)。为了重新网格化,我在每个时间步将旧网格线性插入到新网格上。

我正在寻找一种方法来提高循环每个时间步的过程效率,因为scipy.interpolate.interp2d一次只能处理两个维度。

有没有什么方法可以有效地在时间序列的两个维度上进行线性重新网格/插值,而无需执行for循环(如下所示)?

*注意:我使用 numpy memmaps 将文件写入磁盘和从磁盘写入文件,因为它们通常太大而无法在内存中处理,而 xarray DataArrays 则用于处理 netCDF 文件。

0 投票
1 回答
2094 浏览

python - Create DataArray from Dict of 2D DataFrames/Arrays

I'm trying to transition from Pandas into Xarray for N-Dimensional DataArrays to expand my repertoire.

Realistically, I'm going to have a bunch of different pd.DataFrames (in this case row=month, col=attribute) along a particular axis (patients in the mock example below) that I would like to merge (w/o using panels or multindex :), thank you). I want to convert them to xr.DataArrays so I can build dimensions upon them. I made a mock dataset to give a gist of what I'm talking about.

For this dataset I made up, imagine 100 patients, 12 months, 10000 attributes, 3 replicates (per attribute) which would be a typical 4D dataset. Basically, I'm condensing the 3 replicates per attribute by the mean so I end up with a 2D pd.DataFrame (row=months, col=attributes) this DataFrame is the value in my dictionary and the patient it came from is the key (i.e. (patient_x : DataFrame_X) )

I'm also going to include a round about way I did it with np.ndarray placeholder but it would be really convenient if I could generate a N-dimensional DataArray from a dictionary whose key was patient_x and the value was a DataFrame_X

How can I create a N-Dimensional DataArray using Xarray from a dictionary of Pandas DataFrames?

0 投票
1 回答
1349 浏览

python - Python xarray:按多个参数分组

在 Python 2.7 中使用 xarray 包时,是否可以像在 pandas 中那样对多个参数进行分组?本质上,这样的操作:

如果您想获得数据集的每一年和每一月的平均值。