观潮 · 模式预报与气象 AI 观察
xarray 2026.9.0:最后一个支持 Python 3.11 的版本
> 📌 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(挑跟气象业务相关的)
- Dask 滚动窗口的 dtype 元数据错乱 —— 影响用 Dask 做时间序列滚动计算的流程
polyval在 timedelta 坐标上遇到NaT会返回哨兵值 ——polyval是最常用的垂直坐标插值函数,气象人做垂直插值基本都会用到,这条值得警惕- 维度名为 falsy 值(0 / 空字符串 / False)时堆叠出错 —— 命名不规范的 Dataset 会踩
Coordinates.to_index性能回归 —— 这个是上一版(7.0)修的,7.0 和 9.0 都在列
---
一条工程类消息
文档工具从 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
```
三条硬约束:
zarr必须 ≥ 3.0h5netcdf必须 ≥ 1.8- Python 3.11 是最后期限