# Zarr Python > Arrays N-dimensionales fragmentados (chunked) para almacenamiento en la nube con Zarr-Python 3: arrays comprimidos, E/S paralela, S3/GCS vía fsspec, compatible con NumPy/Dask/Xarray, para pipelines de computación científica a gran escala. Fuente: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/zarr-python Markdown: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/zarr-python.md Repositorio: https://github.com/K-Dense-AI/scientific-agent-skills Autor: K-Dense-AI Licencia: MIT license Actualizado: el mes pasado Coste de contexto: 46 tok instalada, 1.9k tok al activarse, 8.4k tok con todos los archivos del bundle Bundle: 7 archivos, 33 KB Permisos que pide: read write edit bash ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add K-Dense-AI/scientific-agent-skills --skill zarr-python --agent claude-code # Cursor npx -y skills add K-Dense-AI/scientific-agent-skills --skill zarr-python --agent cursor # Codex npx -y skills add K-Dense-AI/scientific-agent-skills --skill zarr-python --agent codex # Gemini CLI npx -y skills add K-Dense-AI/scientific-agent-skills --skill zarr-python --agent gemini # Windsurf npx -y skills add K-Dense-AI/scientific-agent-skills --skill zarr-python --agent windsurf # Cline npx -y skills add K-Dense-AI/scientific-agent-skills --skill zarr-python --agent cline ``` ## Qué hace - Crea y gestiona arrays N-dimensionales fragmentados (chunked) y comprimidos con `zarr.create_array`, `zarr.zeros`, `zarr.ones`, `zarr.full` y `zarr.array` - Organiza arrays en grupos jerárquicos, similares a directorios o HDF5, con `create_group`, `require_group`, `create_array` y `require_array` - Permite indexado estilo NumPy, incluido indexado avanzado (`vindex`, `oindex`, `blocks`), redimensionar (`resize`) y añadir datos (`append`) - Adjunta metadatos JSON-serializables a arrays y grupos vía `.attrs` - Cubre almacenamiento local, en memoria, ZIP y remoto (S3, GCS vía fsspec) y la integración con NumPy, Dask y Xarray ## Cuándo usarla - Almacenar arrays N-dimensionales grandes con chunking y compresión - Necesitar E/S paralela o flujos de trabajo cloud-native (S3, GCS) - Integrar arrays con NumPy, Dask o Xarray en pipelines de computación científica a gran escala ## Qué la activa - "Crea un array Zarr 2D con chunks de 1000x1000" - "Organiza estos arrays en grupos jerárquicos con Zarr" - "Guarda este array grande en S3 con Zarr" - "Migra este código de Zarr v2 a v3" ## Antes de instalar - Necesita Python 3.12+ y zarr 3.x; la E/S en la nube requiere `zarr[remote]` más s3fs o gcsfs con versión fijada, y los flujos Zarr v2 heredados necesitan Python más antiguo con zarr 2.x fijado. ## Archivos - SKILL.md — 7 KB - references/api_reference.md — 5 KB - references/chunking_and_compression.md — 4 KB - references/integration.md — 4 KB - references/performance_and_patterns.md — 5 KB - references/storage_backends.md — 3 KB - references/v3_migration.md — 5 KB ## SKILL.md Reproducido tal cual desde K-Dense-AI/scientific-agent-skills bajo MIT license. Esta sección es el documento original y está en inglés. # Zarr Python ## Overview Zarr is a Python library for storing large N-dimensional arrays with chunking and compression. Apply this skill for efficient parallel I/O, cloud-native workflows, and seamless integration with NumPy, Dask, and Xarray. **Current upstream:** zarr **3.2.1** (released 2026-05-05). Docs: [zarr.readthedocs.io](https://zarr.readthedocs.io/en/stable/). New arrays default to **Zarr format 3**; set `zarr_format=2` for legacy interop. Zarr 3.2 adds rectilinear chunks and continues to refine the v3 codec pipeline. This skill is a **community guide** maintained by K-Dense Inc., not an official zarr-developers package. ## Quick Start ### Installation ```bash uv pip install "zarr==3.2.1" ``` Requires **Python 3.12+** and NumPy 2.0+ for current stable Zarr-Python. For remote stores (S3, GCS, HTTP), pin the optional extras/backends in your project lockfile: ```bash uv pip install "zarr[remote]==3.2.1" "s3fs==2026.4.0" "gcsfs==2026.5.0" ``` Use a version range such as `zarr>=3,<4` only when your project has a committed lockfile and compatibility tests. For Zarr-Python 2 / Python 3.10–3.11 workflows, choose an exact `zarr==2.x.y` patch version from the support-v2 release notes and commit the resulting lockfile. ### Basic Array Creation ```python import zarr import numpy as np # Create a 2D array with chunking and compression z = zarr.create_array( store="data/my_array.zarr", shape=(10000, 10000), chunks=(1000, 1000), dtype="f4" ) # Write data using NumPy-style indexing z[:, :] = np.random.random((10000, 10000)) # Read data data = z[0:100, 0:100] # Returns NumPy array ``` ## Core Operations ### Creating Arrays Zarr provides multiple convenience functions for array creation: ```python # Create empty array z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000), dtype='f4', store='data.zarr') # Create filled arrays z = zarr.ones((5000, 5000), chunks=(500, 500)) z = zarr.full((1000, 1000), fill_value=42, chunks=(100, 100)) # Create from existing data data = np.arange(10000).reshape(100, 100) z = zarr.array(data, chunks=(10, 10), store='data.zarr') # Create like another array z2 = zarr.zeros_like(z) # Matches shape, chunks, dtype of z ``` ### Opening Existing Arrays ```python # Open array (read/write mode by default) z = zarr.open_array('data.zarr', mode='r+') # Read-only mode z = zarr.open_array('data.zarr', mode='r') # The open() function auto-detects arrays vs groups z = zarr.open('data.zarr') # Returns Array or Group ``` ### Reading and Writing Data Zarr arrays support NumPy-like indexing: ```python # Write entire array z[:] = 42 # Write slices z[0, :] = np.arange(100) z[10:20, 50:60] = np.random.random((10, 10)) # Read data (returns NumPy array) data = z[0:100, 0:100] row = z[5, :] # Advanced indexing z.vindex[[0, 5, 10], [2, 8, 15]] # Coordinate indexing z.oindex[0:10, [5, 10, 15]] # Orthogonal indexing z.blocks[0, 0] # Block/chunk indexing ``` ### Resizing and Appending ```python # Resize array (v3: pass shape as a tuple) z.resize((15000, 15000)) # Append data along an axis z.append(np.random.random((1000, 10000)), axis=0) # Adds rows ``` ## Groups and Hierarchies Groups organize multiple arrays hierarchically, similar to directories or HDF5 groups. ### Creating and Using Groups ```python # Create root group root = zarr.group(store='data/hierarchy.zarr') # Create sub-groups temperature = root.create_group('temperature') precipitation = root.create_group('precipitation') # Create arrays within groups temp_array = temperature.create_array( name='t2m', shape=(365, 720, 1440), chunks=(1, 720, 1440), dtype='f4' ) precip_array = precipitation.create_array( name='prcp', shape=(365, 720, 1440), chunks=(1, 720, 1440), dtype='f4' ) # Access using paths array = root['temperature/t2m'] # Visualize hierarchy print(root.tree()) # Output: # / # ├── temperature # │ └── t2m (365, 720, 1440) f4 # └── precipitation # └── prcp (365, 720, 1440) f4 ``` ### Group API (v3) Use `create_array` / `require_array` (h5py-style `create_dataset` / `require_dataset` were removed in v3): ```python root = zarr.group('data.zarr') arr = root.create_array('my_data', shape=(1000, 1000), chunks=(100, 100), dtype='f4') grp = root.require_group('subgroup') arr2 = grp.require_array('array', shape=(500, 500), chunks=(50, 50), dtype='i4') ``` ## Attributes and Metadata Attach custom metadata to arrays and groups using attributes: ```python # Add attributes to array z = zarr.zeros((1000, 1000), chunks=(100, 100)) z.attrs['description'] = 'Temperature data in Kelvin' z.attrs['units'] = 'K' z.attrs['created'] = '2024-01-15' z.attrs['processing_version'] = 2.1 # Attributes are stored as JSON print(z.attrs['units']) # Output: K # Add attributes to groups root = zarr.group('data.zarr') root.attrs['project'] = 'Climate Analysis' root.attrs['institution'] = 'Research Institute' # Attributes persist with the array/group z2 = zarr.open('data.zarr') print(z2.attrs['description']) ``` **Important**: Attributes must be JSON-serializable (strings, numbers, lists, dicts, booleans, null). ## Chunking, Compression, Storage, and Performance - [references/chunking_and_compression.md](references/chunking_and_compression.md): sizing chunks to the access pattern (aim for ~1 MB, 5-100 MB on cloud), sharding, and codec choice. - [references/storage_backends.md](references/storage_backends.md): local, memory, ZIP, and fsspec remote stores (S3, GCS), with credential guidance — prefer IAM roles or workload identity, and never print credential values. - [references/integration.md](references/integration.md): NumPy, Dask, and Xarray integration, thread safety, and consolidated metadata. - [references/performance_and_patterns.md](references/performance_and_patterns.md): optimization, appendable time-series and large-matrix patterns, format conversion, and troubleshooting. - [references/api_reference.md](references/api_reference.md) and [references/v3_migration.md](references/v3_migration.md): full API and the v2-to-v3 migration notes. ## Additional Resources ### Bundled references | File | Contents | |------|----------| | `references/api_reference.md` | Function signatures, stores, codecs, indexing | | `references/v3_migration.md` | Zarr-Python 2→3 breaking changes and WIP features | ### Official upstream - **Documentation**: https://zarr.readthedocs.io/en/stable/ - **3.0 migration guide**: https://zarr.readthedocs.io/en/stable/user-guide/v3_migration/ - **Storage backends**: https://zarr.readthedocs.io/en/stable/user-guide/storage/ - **Zarr specifications**: https://zarr-specs.readthedocs.io/ - **GitHub**: https://github.com/zarr-developers/zarr-python - **Developer chat**: https://ossci.zulipchat.com/#narrow/channel/423692-Zarr-Python **Related libraries:** [Xarray](https://docs.xarray.dev/), [Dask](https://docs.dask.org/), [NumCodecs](https://numcodecs.readthedocs.io/) ## Dónde encaja - Categoría: [Datos y analítica](https://skillsagentes.com/categorias/datos-analitica.md) — Consulta, limpia y visualiza datos sin salir del agente. - Creador: [K-Dense-AI](https://skillsagentes.com/creators/k-dense-ai.md) — 163 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Citation Management](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/citation-management.md): Gestión integral de citas académicas: busca en OpenAlex, PubMed y Google Scholar, extrae metadatos precisos, valida citas y genera entradas BibTeX correctamente formateadas. - [Scientific Slides](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/scientific-slides.md): Crea decks de diapositivas y presentaciones para charlas de investigación: PowerPoint, presentaciones de conferencia, seminarios, defensas de tesis. Da estructura, plantillas, guía de tiempos y validación visual. - [Literature Review](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/literature-review.md): Realiza revisiones bibliográficas sistemáticas y completas usando varias bases académicas (PubMed, arXiv, bioRxiv, Semantic Scholar). Genera markdown y PDF con citas verificadas en varios estilos (APA, Nature, Vancouver). - [Infographics](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/infographics.md): Crea infografías profesionales con Nano Banana Pro AI y refinamiento iterativo inteligente. Usa Gemini 3.6 Flash para revisar la calidad e integra investigación con Perplexity Sonar. Soporta 10 tipos, 8 estilos y paletas para daltonismo. - [Latex Posters](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/latex-posters.md): Crea pósteres de investigación profesionales en LaTeX con beamerposter, tikzposter o baposter, para conferencias y comunicación científica: layout, colores, columnas múltiples e integración de figuras. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)