用途:Zarr 用于存储带分块和压缩的大型 N 维数组,适合高效并行 I/O、云原生工作流,以及与 NumPy、Dask、Xarray 集成。本技能面向 zarr-python 3.x(当前 3.4.0),默认写入 Zarr v3 格式。
主要能力:创建、打开或写入分块压缩的 N 维数组(zarr.create_array、组、属性);为访问模式选择分块形状、分片和编解码器(Zstandard、Blosc、Gzip);将数组放到 S3/GCS 等对象存储并远程读取切片(合并元数据、分片);把 HDF5/NumPy/NetCDF 数据转换为 Zarr,或将 Zarr v2 时代代码(compressor=、synchronizer=、create_dataset)迁移到 v3。
使用方式:安装 uv pip install zarr;云存储需安装对应 fsspec 后端,如 uv pip install s3fs(S3)或 uv pip install gcsfs(GCS)。基本流程为:创建或打开数组/组并选择存储(本地、内存、ZIP、S3/GCS);按访问模式选择分块(建议 1-10 MB);通过 compressors= 选择压缩,默认 Zstandard,Blosc+LZ4 较快,Gzip 压缩比最高,compressors=None 可禁用;用 NumPy 风格索引读写,并随数据增长调整大小或追加;用 Dask 扩展或 Xarray 标注。云和大量数组场景可合并元数据并考虑分片以减少对象/文件数量。
适用场景:需要分块压缩 N 维数组、云对象存储远程切片、格式转换或 v2 到 v3 迁移时。
限制:并行或分布式计算已存于 Zarr 的数组应改用 alterlab-dask;探索未知数据文件并写结构/质量报告用 alterlab-eda;单细胞 AnnData 对象用 alterlab-anndata;大型 CSV/Parquet 表格分析用 alterlab-polars。合并元数据是 zarr-python 约定,尚未纳入 v3 规范,其他读取器可能忽略。zarr 3.2+ 需要 Python 3.12+ 和 NumPy 2(3.1.x 仍支持 Python 3.11)。