[ PROMPT_NODE_27580 ]
zarr-python
[ SKILL_DOCUMENTATION ]
# Zarr Python
## 概览
Zarr 是一个用于存储带有分块和压缩功能的大型N维数组的 Python 库。应用此技能可实现高效的并行 I/O、云原生工作流,并与 NumPy、Dask 和 Xarray 无缝集成。
## 快速入门
### 安装
bash
uv pip install zarr
需要 Python 3.11+。如需云存储支持,请安装额外包:
python
uv pip install s3fs # 用于 S3
uv pip install gcsfs # 用于 Google Cloud Storage
### 基本数组创建
python
import zarr
import numpy as np
# 创建一个带有分块和压缩的二维数组
z = zarr.create_array(
store="data/my_array.zarr",
shape=(10000, 10000),
chunks=(1000, 1000),
dtype="f4"
)
# 使用 NumPy 风格索引写入数据
z[:, :] = np.random.random((10000, 10000))
# 读取数据
data = z[0:100, 0:100] # 返回 NumPy 数组
## 核心操作
### 创建数组
Zarr 提供了多种便捷的数组创建函数:
python
# 创建空数组
z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000), dtype='f4',
store='data.zarr')
# 创建填充数组
z = zarr.ones((5000, 5000), chunks=(500, 500))
z = zarr.full((1000, 1000), fill_value=42, chunks=(100, 100))
# 从现有数据创建
data = np.arange(10000).reshape(100, 100)
z = zarr.array(data, chunks=(10, 10), store='data.zarr')
# 创建与另一数组相似的数组
z2 = zarr.zeros_like(z) # 匹配 z 的形状、分块和数据类型
### 打开现有数组
python
# 打开数组 (默认读/写模式)
z = zarr.open_array('data.zarr', mode='r+')
# 只读模式
z = zarr.open_array('data.zarr', mode='r')
# open() 函数自动检测数组或组
z = zarr.open('data.zarr') # 返回 Array 或 Group
### 读写数据
Zarr 数组支持 NumPy 风格的索引:
python
# 写入整个数组
z[:] = 42
# 写入切片
z[0, :] = np.arange(100)
z[10:20, 50:60] = np.random.random((10, 10))
# 读取数据 (返回 NumPy 数组)
data = z[0:100, 0:100]
row = z[5, :]
# 高级索引
z.vindex[[0, 5, 10], [2, 8, 15]] # 坐标索引
z.oindex[0:10, [5, 10, 15]] # 正交索引
z.blocks[0, 0] # 块/分块索引
### 调整大小与追加
python
# 调整数组大小
z.resize(15000, 15000) # 扩展或缩小维度
# 沿轴追加数据
z.append(np.random.random((1000, 10000)), axis=0) # 添加行
## 分块策略
分块对于性能至关重要