观潮 · 模式预报与气象 AI 观察

xarray 2026.9.0:最后一个支持 Python 3.11 的版本

2026-10-03

> 📌 PyPI 上叫 2026.9.0,GitHub tag 是 v2026.09.0(多一个前导零)。引用时注意别写错。

---

这一版讲了什么

没有大功能,主打兼容性和修 bug。

如果只看一句总结:这是 xarray 最后一个支持 Python 3.11 的版本,下一个版本起必须 3.12+。

如果你的环境还挂在 3.11,这是一个明确的升级截止线。

---

主要变化

能用了的新东西

Zarr V3 的变长分块读取。Zarr 是云端和 AI 时代常用的数组存储格式,支持"变长分块"意味着每个格子的分块大小可以不一样——这对气象数据很关键,因为同一份数组里,陆地和洋面的网格分辨率往往不一样。

Arrow PyCapsule 导出给 DataArray。Arrow 是 pandas、Polars 都在用的零拷贝互操作格式。有了它,xarray 的数据可以直接交给它们,不用复制一份内存。

新的绘图方法 DataArray.plot.lines。

apply_ufunc 支持 DataTree。DataTree 是 xarray 较新的多层数据结构,能把模式输出、观测、卫星数据组织成一个树。

groupby 求中位数用 flox 加速。flox 是 xarray 生态里的并行计算库,之前只有部分操作能用,这次扩展到中位数了。

行为变了(升级要注意)

Bottleneck 现在默认关闭。

Bottleneck 是 pandas 生态的加速库(能让 NaN 安全的运算更快)。xarray 以前会自动加载它,现在默认不加载。

为什么这么改:自动探测加速库会导致"同一份代码在不同机器上行为不一致"。对需要可复现的气象业务来说,牺牲一点速度换一致性是值得的。

影响:依赖 Bottleneck 加速路径的代码,升级后可能变慢。

移除了 zarr-python 2 的兼容代码。 现在只支持 zarr 3 及以上。

h5netcdf 最低版本提到 1.8。 读 NetCDF 的性能和兼容性都可能受影响。

统一了 h5netcdf 和 netcdf4 两个后端的编码处理。 之前两个后端对同一个文件的编码处理有细微差别,现在统一了。

---

修掉的 bug(挑跟气象业务相关的)

---

一条工程类消息

文档工具从 nbsphinx / jupyter-sphinx 换成了 myst_nb。

如果你写过自定义文档流水线(比如在 ReadTheDocs 上构建自己的教程),这个改动会直接弄坏你的配置。升级前先检查你的文档构建脚本。

---

升级前后要做什么

```bash

1. 先确认 Python 版本

python -c "import sys; print(sys.version)"

还是 3.11?2026.9.0 是最后一版,之后必须升 3.12+

2. 升级

pip install -U xarray

3. 验证关键依赖

python -c "import xarray, zarr, h5netcdf; print('xarray', xarray.__version__); print('zarr', zarr.__version__); print('h5netcdf', h5netcdf.__version__)"

4. 如果依赖 Bottleneck 加速,显式装上并验证数值结果一致

pip install bottleneck

```

三条硬约束:

在观潮中打开(含配图与交互)→