问题标签 [python-iris]
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 - 从文件对象或 netCDF4 数据集创建 Iris Cube
有没有办法使用文件对象(二进制流)或从 netCDF4 数据集对象创建(打开/加载)虹膜立方体?
具体来说,我有一个通过 URL 提供的文件,但不是由 OpenDAP 服务器提供的;iris.load_cube()
和朋友在这方面失败了。
我意识到 Iris 更喜欢延迟加载,因此使用 URI 而不是内存中的数据,但这并不总是可行的。
对于普通的 netCDF4Dataset
对象,我可以执行以下操作:
因此,我希望为 Iris 做类似的事情Cube
,或者将 netCDF4 数据集读入多维数据集,而无需通过磁盘上的临时文件。我曾希望 Iris 功能中存在某些内容,但我(还)无法在参考文档中找到它。
performance - Python-iris 在读取 netcdf 数据集时执行非常缓慢
我最近从 netcdf4 切换到 iris 以在 Python 中读取 netcdf 文件(我使用的是 Python 2.7)。在许多方面,这改进了我的代码,但我在某些数据集上遇到了一些性能问题。使用 netcdf4 读取一些文件(不是全部)过去只需要几秒钟,而使用 iris 则需要一分钟或更多分钟。
这是我使用的一个简单测试。使用 netcdf4 进行第一次读取需要 4 秒,使用 iris 大约需要 90 秒!这大大降低了我的代码性能,因为我通常一次运行读取许多文件。
有人发现了同样的行为吗?是不是我对 iris 做错了什么?
python - 为什么从 NumPY 数组中读取 CDF 文件的速度如此之慢
我有一个简单的 netCDF 文件,它有一个数据立方体,即 LAT、LONG、TIME 作为 3 维,它存储温度。它以掩码数组的形式存储在 NumPy 中。下面的代码将其提取为 CSV 格式。但是处理 20 MB 文件非常慢,即每次迭代需要 20 秒,所以我总共有 4 * 548 * 20 秒 = 43840 秒 = 703 分钟 = 12 小时。
如果您查看有注释 TAKES_LONG_TIME 的行,则需要更多时间。我相信对于每个单元格,NumPy 中都会发生从 Python 到 C 代码的切换。不确定在以下情况下我该如何解决。请指教。谢谢。
python - 将 NetCDF 转换为 grib2:以 grib2 格式保存时出现问题
我正在使用 Iris 模块从 netcdf 转换为 grib2:
但我无法保存在 grib2 中!我看到其他用户可以使用相同的 iris 模块做到这一点,但我不知道问题出在哪里。我收到以下错误:"Unable to save GRIB file - "iris_grib" package is not installed."
我刚刚在 Python 3.7 中安装了 iris 2.2.0。iris_grib 模块不适用于 Python 3.7。
data-visualization - 如何使用 Iris 模块绘制大气的垂直剖面和地形?
我有一个模型级别的风速 netcdf。在同一个 netcdf 上,我有每个模型级别的高度。我把netcdf转换成一个立方体,所以每一层的高度就变成了一个辅助坐标。我想绘制一个横截面(经度 x 经度),并希望模型水平遵循地形。我尝试使用 Iris 模块文档示例(https://scitools.org.uk/iris/docs/latest/examples/General/cross_section.html),但它不起作用。
由于我已经有了每个级别相对于海平面的高度,我只需要切成垂直部分并绘制。我尝试按照文档示例进行操作,但它返回错误: ValueError: shape mismatch: objects cannot be broadcast to a single shape
贝娄是 Xarray.Dataset:
我将 DataArray 转换为名为 ws_iris 的多维数据集:
这是我的代码:
如您所见,我遵循与文档示例相同的步骤(https://scitools.org.uk/iris/docs/latest/examples/General/cross_section.html)
当我绘制相对于模型级别的经度时,会绘制垂直部分:
但是当我绘制与高度相关的图时:
我收到以下错误消息:
有人可以帮我确定我的代码有什么问题吗?
或者也许有人知道如何制作我想要的图表。
非常感谢您提前。
python - 如何并行化包含多处理和多线程方面的工作流
我有一个工作流程,我想与 dask 并行化,但我正在努力寻找一种有效的方法来做到这一点。我已经分析了代码并确定了我想要加速的方面。这是伪代码:
基于 numpy 的操作不需要并行化,当在我的本地机器上运行时,它只占不到 5% 的运行时间。我想通过在单独的进程上运行每次迭代来加速 for 循环(特别是昂贵的提取操作是花费大部分时间的地方)。所以我的第一次尝试是在 range(n) 和地图上使用 dask bag
将其作为 i 的函数。
我将它发送到我的基于 slurm 的计算集群以在 n 个进程上运行。它成功地产生了 n 个进程,但在 numpy 操作上超时。调查一下,我认为这是因为每个进程只运行一个线程。当我在没有 dask 的情况下运行代码时,我只得到 1 个进程,但有多个线程,并且基于 numpy 的操作很快。我尝试使用线程调度程序运行代码,然后运行,但仅使用一个进程,因此使用多处理器集群没有加速。(实际上它比没有 dask 的情况下运行要慢)。
所以我想我的问题是我想利用多处理,但如果我这样做,它会禁用多线程,这也是我需要的。
还有其他方法可以解决这个问题吗?谢谢
编辑:我尝试使用 Python 的本机多处理模块,但遇到了同样的问题。如果我将循环中的可迭代对象映射到进程池中的进程,则该函数在遇到 numpy 操作时会停止(嗯,不是停止,但非常慢)(在本例中为 np.apply_along_axis 操作))仅以串行方式运行会更快。
编辑2:我通过重构我的numpy操作来解决这个问题,所以它们只是在循环之外串行发生。(而且我的 iris 操作在多个进程中并行发生。)这行得通,但对我来说,numpy 所做的多线程似乎在子进程内部不起作用似乎仍然很奇怪。
python - 如何对纬度/经度进行分类以查找最近的城市
我正在玩鸢尾花(真的很整洁!),我有一个城市纬度/经度列表,我有兴趣查看一段时间内的平均温度。我有 netcdf 文件,其中包含整个国家的气温。我想用最接近我的城市的纬度/经度来标记立方体中的数据点,这样我就可以轻松地获得这些城市所需的值,或者仅在某处导出这些城市的数据。
我想我需要以某种方式使用 add_categorised_coord ? https://scitools.org.uk/iris/docs/latest/iris/iris/coord_categorisation.html#iris.coord_categorisation.add_categorised_coord
我会欣赏一个例子。谢谢!
numpy - 为什么我的直方图没有显示在 Jupyter 笔记本上?
所以我对编码比较陌生,最近承担了为我的硕士论文建立一些气候模型的艰巨任务。使用此代码,我已经对其进行了调整,现在它没有显示任何错误消息,但现在它没有显示任何数字作为输出。有什么解决办法吗?
我输入
%matplotlib notebook
在代码的顶部,也放在plt.show();
脚本的底部(根据一些类似查询的建议)......但仍然不起作用。在此之前,它显示 <Figure Ssize 432x288 with 0 Axes> 我认为这可能是问题,但我无法弄清楚为什么有 0 个轴?
有什么建议/解决方案吗?
谢谢!
根据要求 - 我的代码: