xarray: N-D labeled Arrays and Datasets in Python

Stephan Hoyer, Joe Hamman · Journal of Open Research Software · 2017 · earth-science · 10.5334/jors.148 · record hoyer2017-xarray-labeled-arrays-datasets-python
tag layer · index · concepts · authors · עברית
Where this record's text came from. 2026-08-30 schema-0.3 pass: every quote verified as an exact substring of the staged text and anchored at merge time; concept terms verified present; every edge endpoint an existing node.
How to read this page. The article text below is reproduced exactly as it was staged; nothing in it has been rewritten. Coloured stretches are tagged. A solid underline means the tag records the paper's own words. A dotted underline means the tag text is the tagger's sentence about the paper — the quotation is the paper's, the wording of the tag is not. Every superscript label links to that tag's row in the table at the foot of the page. The machine-readable edition of the same thing is the TEI file beside this one, where the tags live in standOff. When we have changed our mind. Some entries in the table begin with a word in capitals and the reason for it. EVIDENCE CORRECTED — the finding still stands, but we had quoted the wrong sentence from the paper, and the quotation has been replaced with the right one. RETRACTED — the entry itself was wrong; it stays on the page, marked, with the reason, rather than being deleted. WITHDRAWN AND REPLACED — the entry was wrong, and a corrected version of it appears in the entries below. Each mark carries its own reason, in brackets, because the reasons differ from one entry to the next. An entry we have WITHDRAWN is removed from this page and kept in the record, with its reason. A line reading Audit and a date is a later re-reading of the entry against its whole sentence: DOUBTFUL means it was kept, and the reason says what is loose about it. Quotation marks inside the tagger's sentence. Where a tag is the tagger's own sentence, a phrase in quotation marks inside it is borrowed from the paper — the tagger's wording around it is not. The paper's own sentence is the evidence quote shown on the same row, so the borrowing can be checked against the thing borrowed from without leaving this page. Nothing inside quotation marks anywhere on this page is ours: if it is quoted, it is the paper's. Whose words a concept carries. A concept entry records a term the paper itself uses, so the term, the sense given for it, and its evidence are the paper's own words, quoted where the paper fixes them. This is the opposite of a sense entry in the tag table, which is the tagger's sentence about how the paper uses a term. Where a concept entry could not be grounded in the paper's words, the entry says so on its own row.
Other fields define these differently the same word, defined another way in another discipline
metadata 7 fields · Missing Data 5 fields · Alignment 4 fields · coordinates 3 fields · Dataset 2 fields · continuous integration 2 fields · and 3 more →

Tags on this paper

Every tag the record carries, each linking to every other paper in the corpus that carries it. A tag appears here whether or not its words occur in the article — the spans below are only the ones a sentence in this paper licenses. Of the 51 concept tags on this paper, all 51 are grounded in a quoted sentence. All carry the tagger's gloss of what the term means in this paper, which is not something the article can license.
xarray Python package N-dimensional labeled arrays Common Data Model pandas Panel Scientific data Unlabeled, N-dimensional arrays metadata network Common Data Form collection of self-describing, machine-independent binary data formats and software tools dimensions, variables, and attributes netCDF dataset DataArray Dataset DataFrame dict-like container Dimensions ancillary variables Names and attributes coordinates varying/dependent quantities named dimensions positional ordering of dimensions dimension names dummy dimensions of size one Alignment common coordinates Split-apply-combine xarray plotting functionality thin wrapper Missing Data serialization and I/O third-party libraries Out-of-core computation dask parallel and streaming computation large test suite TravisCI Appveyor sample data compiled dependencies core scientific Python libraries domain-specific packages consistency of labels labeled, multi-dimensional array core metadata-aware operations domain-specific functionality composition high-level accessor interface team of volunteers label consistency coordinate indexing dimension-name broadcasting coordinate alignment third-party I/O integration dask backing continuous integration composition and accessors timestamps attrs data variables time, y, and x Temperature and precipitation latitude and longitude system-or-tool-building
Method, as described: software architecture centered on DataArray and Dataset, with named dimensions, coordinates, interoperable backends, tests, and modular extension points

Legend

relation to other workclaim_relationshow this paper stands to another: agrees, contradicts, extends, qualifies
claim typeclaim_typethe shape of the claim: existence, mechanism, method, critique, prediction, null
concept edgeconcept_edgesan asserted relation between two concepts, with the sentence asserting it
conceptconceptsan idea the paper works with, quoted where the paper uses it
content tagcontent_tagsa finding, definition, quantity, statistic or variable named in the paper
contributioncontributionwhat the paper claims to add
controlcontrolsan experiment run to eliminate a rival explanation
limitationlimitationswhat the paper says its evidence cannot support
mechanismmechanismshow the reported effect is said to come about
methodmethodhow the paper produced its evidence
object of studyobject_of_studywhat the paper is about — the thing it investigates
phenomenonphenomenonthe effect or regularity under study
research questionresearch_questionthe question the paper sets itself
sensesensesa distinct use of a term, quoted where the paper fixes it
unrecordable relationunhoused_relationsa relation the paper asserts that this vocabulary cannot express, with the reason

The paper, tagged

The reference list is not part of the text we hold for this paper. Our copy was extracted from the publisher's page and the bibliography did not survive that extraction, so the article below ends before its references. Nothing has been removed by us.

xarray: N-D labeled Arrays and Datasets in Python

Abstract

object_of_studycontributionclaim_typeconcepts↗concepts↗concepts↗concepts↗sensesconcept_edgescontent_tagscontent_tags↗xarray is an open source project and Python package that provides a toolkit and data structures for N-dimensional labeled arrays. Our approach combines an application programing interface (API) inspired by pandas with the Common Data Model for self-described scientific data. Key features of the xarray package include label-based indexing and arithmetic, interoperability with the core scientific Python packages (e.g., pandas, NumPy, Matplotlib), out-of-core computation on datasets that don’t fit into memory, a wide range of serialization and input/output (I/O) options, and advanced multi-dimensional data manipulation tools such as group-by and resampling. xarray, as a data model and analytics toolkit, has been widely adopted in the geoscience community but is also used more broadly for multi-dimensional data analysis in physics, machine learning and finance.

Python

pandas

netCDF

multidimensional

data

data handling

data analysis

Metrics

(1) Overview

Introduction

Python has emerged as a leading programing language for both the physical sciences and data sciences. At the core of modern scientific computing and analysis in Python are the NumPy [14] and SciPy [22] packages, which provide a robust N-dimensional array object and the fundamental operations required for science and engineering applications. Much of the success of Python in data science and business analytics is due to pandas [16], which introduced intuitive and fast tabular data analysis tools to Python, inspired by R’s data.frame [19]. The pandas DataFrame and Series objects provide unparalleled analysis tools for data alignment, resampling, grouping, pivoting, and aggregation in Python.

limitationsconcepts↗concepts↗claim_relationsconcept_edgescontent_tagsxarray implements data structures and an analytics toolkit for multi-dimensional labeled arrays strongly inspired by pandas. While pandas includes a data structure called the Panel for three dimensional data, its fixed rank design make it unsuitable for applications that require arbitrary rank arrays. Additionally, many of the features that make the pandas DataFrame and Series objects so useful, are not fully available on the Panel. Our approach with xarray adopts Unidata’s self-describing Common Data Model on which the network Common Data Form (netCDF) is built [20, 7]. NetCDF provides a well-defined data model for labeled N-dimensional array-oriented scientific data analysis.

concepts↗unhoused_relationsunhoused_relationsclaim_relationsxarray builds on top of, and seamlessly interoperates with, the core scientific Python packages, such as NumPy, SciPy, Matplotlib [13], and pandas. xarray provides a range of backends for serialization and input/output (IO), including the Pickle, netCDF, OPeNDAP (read-only), GRIB1/2 (read-only), and HDF file formats. Leveraging the dask parallel computing library [21], xarray can optionally perform efficient parallel, out-of-core analysis on datasets that are too large to fit into memory. Finally, xarray interfaces with existing domain-specific packages such as UV-CDAT [25], Iris [17], and Cartopy [18].

Purpose: Your data has labels; you should use them

phenomenonconcepts↗sensescontent_tags↗content_tags↗Scientific data is inherently labeled. For example, time series data includes timestamps that label individual periods or points in time, spatial data has coordinates (e.g. longitude, latitude, elevation), and model or laboratory experiments are often identified by unique identifiers. Figure 1 provides an example of a labeled dataset. In this case the data is a map of global air temperature from a numeric weather model. The labels on this particular dataset are time (e.g. “2016-05-01”), longitude (x-axis), and latitude (y-axis).

An example of a multidimensional labeled array. This figure (map) is showing the global surface air temperature for May 1, 2016 from ERA-Interim Reanalyis [11]. The map is labeled with the array's coordinates: longitude and latitude.

research_questionlimitationsconcepts↗concepts↗Unlabeled, N-dimensional arrays of numbers (e.g., NumPy’s ndarray) are the most widely used data structure in scientific computing. However, they lack a meaningful representation of the metadata associated with their data. Implementing such functionality is left to individual users and domain-specific packages. As a result, programmers frequently encounter pitfalls in the form of questions like “is the time axis of my array in the first or third index position?” or “does my array of timestamps still align with my data after resampling?”.

mechanisms↗concepts↗unhoused_relationscontent_tagsThe core motivation for developing xarray was to provide labeled data tools for N-dimensional arrays that render such questions moot. Every operation in xarray both relies on and maintains the consistency of labels.

NetCDF

concepts↗concepts↗concept_edgescontent_tags↗The network Common Data Form is a collection of self-describing, machine-independent binary data formats and software tools. These data formats and tools facilitate the creation, access, and sharing of scientific data stored in N-dimensional arrays, along with metadata describing the contents of each array [20]. NetCDF has become very popular in the geoscience community, and there are existing libraries for reading and writing netCDF in many programming languages, including C, Fortran, Python, Java, Matlab, and Julia.

concepts↗concepts↗concept_edgescontent_tags↗The principal data structure in the netCDF data model is the dataset. Each netCDF dataset contains dimensions, variables, and attributes, each of which are identified by a hierarchy of unique names. The dataset and variable objects may contain attributes that describe the contents, units, history, or other metadata of the object. Standardized conventions, such as the Climate and Forecast (CF) Conventions [12], allow for the associations of coordinate variables with dimensions.

Implementation and architecture

method↗sensesclaim_relationscontent_tagscontent_tagsNetCDF forms the basis of the xarray data model and provides a natural and portable serialization format. Building on netCDF, xarray features two main data structures: the DataArray and the Dataset. The API for these data structures is summarized in the following sections and in Figure 2.

An overview of xarray’s main data structures. Types are annotated using Python 3 style type hints [23]. “Mapping of” denotes an ordered mapping with values of the given type.

DataArray

concepts↗concepts↗unhoused_relationssensescontent_tagscontent_tags↗The DataArray is xarray’s implementation of a labeled, multi-dimensional array. It has several key properties:

data: N-dimensional array (NumPy or dask) holding the array's values,

coords: dict-like container of arrays (coordinates) that label each point (e.g., 1-dimensional arrays of numbers, datetime objects or strings),

dims: dimension names for each axis [e.g., (‘time’, ‘latitude’, ‘longitude’)],

attrs: OrderedDict holding arbitrary metadata (e.g. units or descriptions), and

name: an arbitrary name for the array.

mechanisms↗limitationsconcepts↗concepts↗concepts↗concepts↗concepts↗unhoused_relationssensesconcept_edgescontent_tags↗content_tags↗content_tags↗content_tags↗xarray uses dims and coords to enable its core metadata-aware operations. Dimensions provide names that xarray uses instead of the axis argument found in many NumPy functions. Coordinates are ancillary variables used to enable fast label based indexing and alignment, building on the functionality of the pandas Index. DataArray objects also can have a name and can hold arbitrary metadata in the form of their attrs property, which can be used to further describe data (e.g. by providing units). Names and attributes are strictly for users and user-written code; in general xarray makes no attempt to interpret them, and propagates them only in unambiguous cases. In contrast, xarray does interpret and persist coordinates in operations that transform xarray objects.

Dataset

concepts↗concepts↗concepts↗sensesconcept_edgesconcept_edgescontent_tagscontent_tags↗The Dataset is xarray’s multi-dimensional equivalent of a DataFrame. It is a dict-like container of labeled arrays (DataArrays) with aligned dimensions. It is designed as an in-memory representation of a netCDF dataset. In addition to the dict-like interface of the dataset itself, which can be used to access any DataArray in a Dataset, datasets have four key properties:

data_vars: OrderedDict of DataArray objects corresponding to data variables,

coords: OrderedDict of DataArray objects intended to label points used in data_vars (e.g., 1-dimensional arrays of numbers, datetime objects or strings),

dims: dictionary mapping from dimension names to the fixed length of each dimension (e.g., {‘x’: 6, ‘y’: 6, ‘time’: 8}), and

attrs: OrderedDict to hold arbitrary metadata pertaining to the dataset.

limitationsconcepts↗concept_edgescontent_tagscontent_tags↗DataArray objects inside a Dataset may have any number of dimensions but are presumed to share a common coordinate system. Coordinates can also have any number of dimensions but denote constant/independent quantities, unlike the varying/dependent quantities that belong in data. Figure 3 illustrates these concepts for an example Dataset containing meteorological data.

content_tags↗content_tags↗content_tags↗An example of how a dataset (netCDF or xarray) for a weather forecast might be structured. This dataset has three dimensions, time, y, and x, each of which is also a one-dimensional coordinate. Temperature and precipitation are three-dimensional data variables. Also included in the dataset are two-dimensional coordinates latitude and longitude, having dimensions y and x, and reference time, a zero-dimensional (scalar) coordinate.

Core xarray Features

xarray includes a powerful and growing feature set. The following list highlights some of the key features available in xarray. The xarray documentation [2] includes a complete description of available features and their usage.

mechanisms↗concepts↗concepts↗concept_edgescontent_tagsLabel-based indexing: Similarly to pandas objects, xarray objects support both integer- and label-based lookups along each dimension. However, xarray objects also have named dimensions, so you can optionally use dimension names instead of relying on the positional ordering of dimensions.

mechanisms↗concepts↗concepts↗unhoused_relationscontent_tagsArithmetic: arithmetic between xarray objects vectorizes based on dimension names, automatically looping (broadcasting) over each distinct dimension. This eliminates the need to insert dummy dimensions of size one to facilitate broadcasting, a common pattern with NumPy.

Aggregation: calculation of statistics (e.g. sum) along a dimension of an xarray object can be done by dimension name instead of an integer axis number.

mechanisms↗concepts↗concepts↗sensescontent_tags↗Alignment: xarray supports database-like join operations for combining xarray objects along common coordinates.

concepts↗content_tags↗Split-apply-combine: xarray includes N-dimensional grouped operations implementing the split-apply-combine strategy [24].

Resampling and rolling window operations: Utilizing the efficient resampling methods from pandas and rolling window operations from Bottleneck [15], xarray offers a robust set of resampling and rolling window operations along a single dimension.

concepts↗concepts↗concept_edgesPlotting: xarray plotting functionality is a thin wrapper around the popular Matplotlib library. xarray uses the syntax and function names from Matplotlib whenever possible, resulting in a seamless transition between the two.

concepts↗Missing Data: xarray smoothly handles missing data in all operations, including arithmetic, alignment and aggregation.

Interactivity with pandas: xarray objects seamlessly to convert to and from pandas objects to interact with the rest of the PyData ecosystem.

mechanisms↗limitationsconcepts↗concepts↗unhoused_relationsSerialization and I/O: xarray supports direct serialization and I/O to several file formats including pickle, netCDF, OPeNDAP (read-only), GRIB1/2 (read-only), and HDF by integrating with third-party libraries. Additional serialization formats for 1-dimensional data are available through pandas.

mechanisms↗concepts↗concepts↗concepts↗unhoused_relationssensescontent_tagscontent_tags↗content_tagsOut-of-core computation: xarray’s data structures can be backed by dask [21] instead of NumPy to support parallel and streaming computation on data that does not fit into memory, up to 100s of GB or TBs in size. Such large datasets (“big data”) are increasingly prevalent in science.

Quality control

mechanisms↗controlscontrolscontrolsconcepts↗concepts↗concepts↗concepts↗unhoused_relationssensescontent_tagscontent_tagsxarray is provided with a large test suite comprised of over 1,500 unit tests. These tests cover the core xarray functionality as well as features facilitated by optional dependencies. The unit tests are executed automatically on the TravisCI (Linux) [5] and Appveyor (Windows) [1] continuous integration systems. A selection of sample data is also distributed with the source code, allowing users to reproduce any examples in the xarray documentation.

(2) Availability

Operating system

Linux, Windows and Mac OS X.

Programming language

Python, versions 2.7, 3.4 and later.

Additional system requirements

None.

Dependencies

limitationsconcepts↗unhoused_relationsxarray is implemented in pure Python and relies on compiled dependencies for speed.

NumPy: 1.7 or later

pandas: 0.15.0 or later

netcdf4-python: (optional) used for reading and writing netCDF files

SciPy: (optional) used as a fallback for reading/writing netCDF3

Pydap: (optional) used as a fallback for accessing OPeNDAP

h5netcdf: (optional) an alternative library for reading and writing netCDF4 files that does not use the netCDF-C libraries

PyNIO: (optional) for reading GRIB1/2 and other geoscience specific file formats

Bottleneck: (optional) speeds up NaN-skipping and rolling window aggregations by a large factor

cyordereddict: (optional) speeds up most internal operations with xarray data structures

Dask: (optional) required for out-of-core parallel computation

Matplotlib: (optional) required for plotting

Cartopy: (optional) required for plotting maps

seaborn: (optional) additional plotting functionality

List of contributors

Alex Kleeman, The Climate Corporation

Alistair Miles, Wellcome Trust Centre for Human Genetics, University of Oxford

Andreas Hilboll, Institute of Environmental Physics, University of Bremen

Anna Kuznetsova, The Climate Corporation

Antony Lee, Department of Physics, University of California, Berkeley

Bas Hoonhout, Deltares, The Netherlands

Benjamin Root, Atmospheric and Environmental Research, Inc.

Benoit Bovy, Department of Astrophysics, Geophysics and Oceanography, University of Lige

Chun-Wei Yuan, Institute for Health Metrics and Evaluation, University of Washington

Christoph Deil, Max Planck Institute for Nuclear Physics

Clark Fitzgerald, Department of Statistics, University of California, Davis

Dean Pospisil, Institute for Learning and Brain Sciences, University of Washington

Edward Richards, Scripps Institution of Oceanography, University of California, San Diego

Erik Welch, Continuum Analytics

Eugene Brevdo, Google Research

Fabien Maussion, Institute of Atmospheric and Cryospheric Sciences, University of Innsbruck

Filipe Fernandes, Universidade de So Paulo

Guido Imperiale, Legal & General

Hauser Mathias, Institute for Atmospheric and Climate Science, ETH Zurich

Igor Babuschkin, School of Physics and Astronomy, University of Manchester

Jeffrey Gerard, The Climate Corporation

Jeremy McGibbon, Department of Atmospheric Sciences, University of Washington

Jonathan Chambers, UCL Energy Institute, London UK

Julia Signell, Department of Civil and Environmental Engineering, Princeton University

Joseph Hamman, National Center for Atmospheric Research

Johnnie Gray, University College London

Jonathan Helmus, Environmental Science Division, Argonne National Laboratory

Kelsey Jordahl, Planet Labs

Maciek Swat, University of Pennsylvania

Marco Zhlke, Brockmann Consult GmbH

Markel Garca-Dez, Catalan Institute of Climate Sciences

Markus Gonser

Maximilian Roos, Sixty Capital

Mike Graham, Edgestream Partners

Nikolay Koldunov, Climate Service Center Germany

Peter Cable, Raytheon

Phillip J. Wolfram, Fluid and Solid Mechanics (T-3), Theoretical Division, Los Alamos National Laboratory

Rafael Guedes, MetOcean Solutions Ltd

Robin Wilson, Geography & Environment, University of Southampton, UK

Ryan Abernathey, Department of Earth and Environmental Sciences, Columbia University

Scott Sinclair, Satellite Applications and Hydrology Group, Dept. Civil Engineering, University of KwaZulu-Natal

Sébastien Celles, Thermal Science and Energy Department, Poitiers Institute of Technology (IUT)

Spencer A. Hill, Program in Atmospheric and Oceanic Sciences, Princeton University

Stefan Pfenninger, Department of Environmental Systems Science, ETH Zrich

Stephan Hoyer, Google Research

Steven E. Pav, Gilgamath Consulting

Takeshi Kanmae, National Institute of Polar Research, Japan

Thomas Kluyver, Computational Modeling Group, University of Southampton

Todd Small, The Climate Corporation

Valliappa Lakshmanan, Google

Yves Delley, Department of Physics, ETH Zurich

Software location

Archive

Name: Zenodo

Persistent identifier: https://doi.org/10.5281/zenodo.264282

License: Apache, v2.0

Publisher: Zenodo

Version published: 0.9.1

Date published: January 30, 2017

Code repository

Name: GitHub

Identifier: http://github.com/pydata/xarray

License: Apache, v2.0

Date published: January 30, 2017

Language

English.

(3) Reuse potential

mechanisms↗limitationsconcepts↗concepts↗concepts↗concepts↗unhoused_relationssensesclaim_relationscontent_tagsxarray was written in a modular, objected-oriented way, to build upon and extend the core scientific Python libraries in a domain-agnostic fashion. The xarray documentation is complete with a wide range of examples and a number of tutorials that use real-world datasets that are available in the xarray repository. We have intentionally avoided including domain-specific functionality in the library, leaving that to third party libraries. It has been widely adopted in the geoscience community [e.g. 6, 10, 9], but has also been used in physics [e.g. 3], time series analytics [8], and finance. The core xarray data structures (the DataArray and the Dataset) are extensible through subclassing or the preferred approach of composition. We also provide an extensible high-level accessor interface to allow users to implement domain specific methods on xarray data objects.

limitationsconcepts↗xarray is developed and supported by a team of volunteers. The primary avenue for user support is StackOverflow [4], with the “xarray-python” tag. Additionally, we use GitHub for a bug tracker (https://github.com/pydata/xarray/issues) and maintain the “xarray” mailing list on Google Groups (https://groups.google.com/forum/#!forum/xarray).

Acknowledgements

Initial development of xarray was supported by The Climate Corporation. We thank Matthew Rocklin and Jim Crist for their assistance integrating xarray with Dask, and Todd Small, Francisco Alvarez and Fabien Maussion for their feedback on early drafts of this manuscript.

Competing Interests

The authors have no competing interests to declare.

Every tag on this page

claim_relations 4 · claim_type 1 · concept_edges 10 · concepts 51 · content_tags 33 · contribution 1 · controls 3 · limitations 8 · mechanisms 9 · method 1 · object_of_study 1 · phenomenon 1 · research_question 1 · senses 10 · unhoused_relations 11

Relations on this page carry a quotation for the claim. Where a relation was separately evidenced — and so tested against the vocabulary for its type — the row says so; 10 of 10 relations here carry that mark. The rest are the tagger’s reading of the sentence quoted beside them.

facettagfieldconf.whose words
object_of_studyxarray's data model, architecture, capabilities, quality controls, availability, and reuse potentialobject_of_studythe paper's words
research_questionhow to make labeled N-dimensional scientific arrays support metadata-aware analysis, interoperability, serialization, and out-of-core computationresearch_questionthe paper's words
contributionthe xarray Python package, combining a pandas-inspired API with the self-describing Common Data Model for arbitrary-rank labeled arrayscontributionthe paper's words
claim_typemethodclaim_typethe paper's words
phenomenonmetadata-aware manipulation of labeled multidimensional scientific dataphenomenonthe paper's words
methodsystem-or-tool-buildingmethodthe paper's words
mechanismsEvery operation consumes and preserves labels so data and metadata stay aligned.mechanisms[0]0.95the tagger's words
mechanismsDimension names replace positional axes for indexing and aggregation.mechanisms[1]0.95the tagger's words
mechanismsAncillary coordinate variables build on pandas Index for fast lookup and alignment.mechanisms[2]0.95the tagger's words
mechanismsArithmetic loops over distinct named dimensions without dummy size-one axes.mechanisms[3]0.95the tagger's words
mechanismsDatabase-like joins combine xarray objects along coordinates shared between them.mechanisms[4]0.95the tagger's words
mechanismsMultiple serialization formats are exposed by integrating their libraries.mechanisms[5]0.95the tagger's words
mechanismsDask-backed structures execute parallel and streaming computations outside memory.
also in: dask backing
mechanisms[6]0.95the tagger's words
mechanismsThe unit suite is run automatically on Linux and Windows services.mechanisms[7]0.95the tagger's words
mechanismsComposition, subclassing, and accessor interfaces add domain methods without putting them in the core.mechanisms[8]0.95the tagger's words
limitationsPandas Panel has a fixed three-dimensional rank and lacks features available to DataFrame and Series.limitations[0]0.95the tagger's words
limitationsUnlabeled arrays do not meaningfully represent associated metadata, leaving alignment to users or domain packages.limitations[1]0.95the tagger's words
limitationsNames and attributes are not interpreted by xarray and are propagated only in unambiguous cases.limitations[2]0.95the tagger's words
limitationsDataArrays in a Dataset are presumed to share a common coordinate system.limitations[3]0.95the tagger's words
limitationsOPeNDAP and GRIB serialization backends are read-only.limitations[4]0.95the tagger's words
limitationsThe pure-Python implementation relies on compiled dependencies for speed.limitations[5]0.95the tagger's words
limitationsDomain-specific functionality is intentionally left to third-party libraries.limitations[6]0.95the tagger's words
limitationsDevelopment and support depend on a volunteer team.limitations[7]0.95the tagger's words
controlsover 1,500 unit tests
eliminates: regressions in core and optional-dependency functionality · outcome: held
controls[0]0.95the tagger's words
controlsTravisCI and Appveyor
eliminates: platform-specific failures missed by a single operating system · outcome: held
controls[1]0.95the tagger's words
controlssample data distributed with the source code
eliminates: examples that users cannot reproduce · outcome: held
controls[2]0.95the tagger's words
conceptsxarray
also in: xarray
concepts[0]0.95the paper's words
conceptsPython packageconcepts[1]0.95the paper's words
conceptsN-dimensional labeled arraysconcepts[2]0.95the paper's words
conceptsCommon Data Modelconcepts[3]0.95the paper's words
conceptspandas
also in: pandas
concepts[4]0.95the paper's words
conceptsPanel
also in: Panel
concepts[5]0.95the paper's words
conceptsScientific dataconcepts[6]0.95the paper's words
conceptsUnlabeled, N-dimensional arraysconcepts[7]0.95the paper's words
conceptsmetadata
also in: metadata
concepts[8]0.95the paper's words
conceptsnetwork Common Data Formconcepts[9]0.95the paper's words
conceptscollection of self-describing, machine-independent binary data formats and software toolsconcepts[10]0.95the paper's words
conceptsdimensions, variables, and attributesconcepts[11]0.95the paper's words
conceptsnetCDF datasetconcepts[12]0.95the paper's words
conceptsDataArray
also in: DataArray
concepts[13]0.95the paper's words
conceptsDataset
also in: Dataset
concepts[14]0.95the paper's words
conceptsDataFrame
also in: DataFrame
concepts[15]0.95the paper's words
conceptsdict-like containerconcepts[16]0.95the paper's words
conceptsDimensions
also in: Dimensions
concepts[17]0.95the paper's words
conceptsancillary variablesconcepts[18]0.95the paper's words
conceptsNames and attributesconcepts[19]0.95the paper's words
conceptscoordinates
also in: coordinates
concepts[20]0.95the paper's words
conceptsvarying/dependent quantitiesconcepts[21]0.95the paper's words
conceptsnamed dimensionsconcepts[22]0.95the paper's words
conceptspositional ordering of dimensionsconcepts[23]0.95the paper's words
conceptsdimension namesconcepts[24]0.95the paper's words
conceptsdummy dimensions of size oneconcepts[25]0.95the paper's words
conceptsAlignment
also in: Alignment
concepts[26]0.95the paper's words
conceptscommon coordinatesconcepts[27]0.95the paper's words
conceptsSplit-apply-combineconcepts[28]0.95the paper's words
conceptsxarray plotting functionalityconcepts[29]0.95the paper's words
conceptsthin wrapper
also in: thin wrapper
concepts[30]0.95the paper's words
conceptsMissing Data
also in: Missing Data
concepts[31]0.95the paper's words
conceptsserialization and I/Oconcepts[32]0.95the paper's words
conceptsthird-party librariesconcepts[33]0.95the paper's words
conceptsOut-of-core computationconcepts[34]0.95the paper's words
conceptsdask
also in: dask
concepts[35]0.95the paper's words
conceptsparallel and streaming computationconcepts[36]0.95the paper's words
conceptslarge test suiteconcepts[37]0.95the paper's words
conceptsTravisCI
also in: TravisCI
concepts[38]0.95the paper's words
conceptsAppveyor
also in: Appveyor
concepts[39]0.95the paper's words
conceptssample data
also in: sample data
concepts[40]0.95the paper's words
conceptscompiled dependenciesconcepts[41]0.95the paper's words
conceptscore scientific Python librariesconcepts[42]0.95the paper's words
conceptsdomain-specific packagesconcepts[43]0.95the paper's words
conceptsconsistency of labelsconcepts[44]0.95the paper's words
conceptslabeled, multi-dimensional arrayconcepts[45]0.95the paper's words
conceptscore metadata-aware operationsconcepts[46]0.95the paper's words
conceptsdomain-specific functionalityconcepts[47]0.95the paper's words
conceptscomposition
also in: composition
concepts[48]0.95the paper's words
conceptshigh-level accessor interfaceconcepts[49]0.95the paper's words
conceptsteam of volunteersconcepts[50]0.95the paper's words
unhoused_relationsxarray → core scientific Python packages
xarray builds on and interoperates with core scientific Python packages.
unhoused_relations[0]0.95the tagger's words
unhoused_relationsxarray → domain-specific packages
xarray interfaces with domain-specific packages.
unhoused_relations[1]0.95the tagger's words
unhoused_relationsxarray → consistency of labels
Every xarray operation relies on and maintains label consistency.
unhoused_relations[2]0.95the tagger's words
unhoused_relationsDataArray → labeled, multi-dimensional array
DataArray implements a labeled multidimensional array.
unhoused_relations[3]0.95the tagger's words
unhoused_relationsDimensions → core metadata-aware operations
Dimensions enable xarray's metadata-aware operations.
unhoused_relations[4]0.95the tagger's words
unhoused_relationsdimension names → dummy dimensions of size one
Dimension-name broadcasting eliminates the need for dummy size-one dimensions.
unhoused_relations[5]0.95the tagger's words
unhoused_relationsdask → parallel and streaming computation
Dask backing supports parallel and streaming computation beyond memory.
unhoused_relations[6]0.95the tagger's words
unhoused_relationsserialization and I/O → third-party libraries
xarray serialization and I/O integrate third-party libraries.
unhoused_relations[7]0.95the tagger's words
unhoused_relationslarge test suite → TravisCI
The unit-test suite is executed automatically on TravisCI.
unhoused_relations[8]0.95the tagger's words
unhoused_relationsxarray → compiled dependencies
The pure-Python xarray implementation relies on compiled dependencies for speed.
unhoused_relations[9]0.95the tagger's words
unhoused_relationshigh-level accessor interface → domain-specific functionality
The accessor interface lets users implement domain-specific methods on xarray objects.
unhoused_relations[10]0.95the tagger's words
sensesxarray as a pandas-inspired, netCDF-grounded labeled-array toolkitsenses[0]0.95the tagger's words
sensesscientific labels as timestamps, coordinates, or experiment identifierssenses[1]0.95the tagger's words
sensesnetCDF as both a self-describing data model and portable serialization basissenses[2]0.95the tagger's words
sensesDataArray as one labeled multidimensional arraysenses[3]0.95the tagger's words
sensesDataset as aligned DataArrays sharing a coordinate systemsenses[4]0.95the tagger's words
sensesdimensions as named axes and coordinates as ancillary index variablessenses[5]0.95the tagger's words
sensesalignment as database-like joining on common coordinatessenses[6]0.95the tagger's words
sensesout-of-core as dask-backed parallel or streaming work beyond memorysenses[7]0.95the tagger's words
sensesquality control as cross-platform automated unit testing plus reproducible sample datasenses[8]0.95the tagger's words
sensesreuse as a domain-agnostic core extended through third-party composition and accessorssenses[9]0.95the tagger's words
claim_relationsbuilds-on → pandas
note: The labeled-array structures and analytics are strongly inspired by pandas.
claim_relations[0]0.95the tagger's words
claim_relationsbuilds-on → netCDF
note: NetCDF explicitly forms the basis of the xarray model.
claim_relations[1]0.95the tagger's words
claim_relationsextends → core scientific Python libraries
note: The modular design builds upon and extends core libraries without embedding domains.
claim_relations[2]0.95the tagger's words
claim_relationscomplements → domain-specific packages
note: xarray interfaces with domain-specific packages while retaining a domain-agnostic core.
claim_relations[3]0.95the tagger's words
concept_edgesxarray —is-a→ Python package
the relation itself is separately evidenced · strength of the relation: 1 · note: Flat categorical classification. · the relation stated: xarray is a Python package.
concept_edges[0]0.95the tagger's words
concept_edgesxarray —contrasted-with→ Panel
the relation itself is separately evidenced · strength of the relation: 0.95 · note: Direct while-contrast and stated suitability difference. · the relation stated: xarray's arbitrary-rank labeled arrays contrast with pandas Panel's fixed three-dimensional rank.
also in: xarray · Panel
concept_edges[1]0.95the tagger's words
concept_edgesnetwork Common Data Form —is-a→ collection of self-describing, machine-independent binary data formats and software tools
the relation itself is separately evidenced · strength of the relation: 1 · note: Explicit categorical definition. · the relation stated: The network Common Data Form is a collection of self-describing binary formats and software tools.
concept_edges[2]0.95the tagger's words
concept_edgesdimensions, variables, and attributes —part-of→ netCDF dataset
the relation itself is separately evidenced · strength of the relation: 1 · note: Categorical containment stated by 'contains'. · the relation stated: Dimensions, variables, and attributes are contained in each netCDF dataset.
concept_edges[3]0.95the tagger's words
concept_edgesDataset —same-as→ DataFrame
the relation itself is separately evidenced · strength of the relation: 0.9 · note: Scoped multidimensional equivalence, so below full identity strength. · the relation stated: Dataset is xarray's multidimensional equivalent of a DataFrame. Audit 2026-09-28: DOUBTFUL - read against its span and kept, but the Dataset is the multi-dimensional EQUIVALENT of a DataFrame; same-as overstates.
also in: Dataset · DataFrame
concept_edges[4]0.95the tagger's words
concept_edgesDataset —is-a→ dict-like container
the relation itself is separately evidenced · strength of the relation: 1 · note: Explicit categorical classification. · the relation stated: Dataset is a dict-like container of aligned DataArrays.
concept_edges[5]0.95the tagger's words
concept_edgesNames and attributes —contrasted-with→ coordinates
the relation itself is separately evidenced · strength of the relation: 0.95 · about this quote: DOUBTFUL, found by an audit that read the edge against its span: weak contrast. The edge is kept live; a reader should weigh it with this in mind. · note: Explicit in-contrast comparison. · the relation stated: Names and attributes are not interpreted generally, in contrast to coordinates persisted through transformations.
concept_edges[6]0.95the tagger's words
concept_edgescoordinates —distinct-from→ varying/dependent quantities
the relation itself is separately evidenced · strength of the relation: 0.95 · note: Explicit unlike distinction. · the relation stated: Coordinates denote constant or independent quantities, unlike varying or dependent data quantities.
concept_edges[7]0.95the tagger's words
concept_edgesnamed dimensions —contrasted-with→ positional ordering of dimensions
the relation itself is separately evidenced · strength of the relation: 0.95 · note: Direct instead-of contrast. · the relation stated: Named dimensions are used instead of relying on positional dimension ordering.
concept_edges[8]0.95the tagger's words
concept_edgesxarray plotting functionality —is-a→ thin wrapper
the relation itself is separately evidenced · strength of the relation: 1 · note: Explicit categorical classification. · the relation stated: xarray plotting functionality is a thin wrapper around Matplotlib.
concept_edges[9]0.95the tagger's words
content_tagsxarray combines a pandas-inspired API with a self-describing scientific-data model.content_tags.findings[0]0.95the tagger's words
content_tagsPandas Panel's fixed rank is unsuitable for arbitrary-rank array applications.content_tags.findings[1]0.95the tagger's words
content_tagsEvery xarray operation relies on and maintains label consistency.content_tags.findings[2]0.95the tagger's words
content_tagsNetCDF supplies xarray's data-model basis and portable serialization format.content_tags.findings[3]0.95the tagger's words
content_tagsDataArray represents a labeled multidimensional array.content_tags.findings[4]0.95the tagger's words
content_tagsDataset is a dictionary-like container of aligned DataArrays and an in-memory netCDF representation.content_tags.findings[5]0.95the tagger's words
content_tagsNamed dimensions replace positional axis arguments for xarray indexing.content_tags.findings[6]0.95the tagger's words
content_tagsDimension-name broadcasting removes the need to insert dummy size-one dimensions.content_tags.findings[7]0.95the tagger's words
content_tagsDask backing supports parallel and streaming computation on data too large for memory.content_tags.findings[8]0.95the tagger's words
content_tagsThe test suite contains more than 1,500 unit tests run on Linux and Windows continuous integration.content_tags.findings[9]0.95the tagger's words
content_tagsThe core data structures are extensible through composition, subclassing, and high-level accessors.content_tags.findings[10]0.95the tagger's words
content_tagsan open-source Python project providing labeled N-dimensional array structures and analytics
also in: xarray
content_tags.definitions[0]0.95the tagger's words
content_tagsself-describing, machine-independent formats and tools for array scientific datacontent_tags.definitions[1]0.95the tagger's words
content_tagsthe principal netCDF structure containing named dimensions, variables, and attributes
also in: dataset
content_tags.definitions[2]0.95the tagger's words
content_tagsxarray's labeled multidimensional array implementation
also in: DataArray
content_tags.definitions[3]0.95the tagger's words
content_tagsa dictionary-like container of aligned DataArrays and in-memory netCDF representation
also in: Dataset
content_tags.definitions[4]0.95the tagger's words
content_tagsnames used in place of positional axis arguments
also in: Dimensions
content_tags.definitions[5]0.95the tagger's words
content_tagsancillary variables used for label-based indexing and alignment
also in: Coordinates
content_tags.definitions[6]0.95the tagger's words
content_tagsdatabase-like joins along common coordinates
also in: Alignment
content_tags.definitions[7]0.95the tagger's words
content_tagsN-dimensional grouped operations following the split-apply-combine strategycontent_tags.definitions[8]0.95the tagger's words
content_tagsparallel or streaming work on data that does not fit into memorycontent_tags.definitions[9]0.95the tagger's words
content_tags100s of GB or TBs — scale of out-of-memory datasets supported through daskcontent_tags.quantities[0]0.95the tagger's words
content_tagsover 1,500 unit tests — size of the xarray test suitecontent_tags.quantities[1]0.95the tagger's words
content_tagstwo main data structures — DataArray and Dataset in the xarray modelcontent_tags.quantities[2]0.95the tagger's words
content_tagsany number of dimensions — rank permitted for DataArrays and coordinatescontent_tags.quantities[3]0.95the tagger's words
content_tagstimestamps
also in: timestamps
content_tags.variables[0]0.95the tagger's words
content_tagscoordinates
also in: coordinates
content_tags.variables[1]0.95the tagger's words
content_tagsdimension namescontent_tags.variables[2]0.95the tagger's words
content_tagsattrs
also in: attrs
content_tags.variables[3]0.95the tagger's words
content_tagsdata variablescontent_tags.variables[4]0.95the tagger's words
content_tagstime, y, and xcontent_tags.variables[5]0.95the tagger's words
content_tagsTemperature and precipitationcontent_tags.variables[6]0.95the tagger's words
content_tagslatitude and longitudecontent_tags.variables[7]0.95the tagger's words

Interpretive choices

Tags that could not be placed in the text:

What was deliberately not tagged, and why, is recorded per paper by the tagger. Where a paper has no such record, this page says so rather than implying that nothing was declined.

© 2026 Shir Sivroni · ORCID 0009-0000-2597-2824