Skip to main content

A package for handling numpy arrays with units

Project description

unyt conda-forge Documentation Status Test Coverage Code Paper

The yt Project

A package for handling numpy arrays with units.

Often writing code that deals with data that has units can be confusing. A function might return an array but at least with plain NumPy arrays, there is no way to easily tell what the units of the data are without somehow knowing a priori.

The unyt package (pronounced like “unit”) provides a subclass of NumPy’s ndarray class that knows about units. For example, one could do:

>>> import unyt as u
>>> distance_traveled = [3.4, 5.8, 7.2] * u.mile
>>> print('km'))
[ 5.4717696  9.3341952 11.5872768] km

And a whole lot more! See the documentation for installation instructions, more examples, and full API reference.

This package only depends on numpy, sympy, six and, on Python 2.7, backports.functools_lru_cache (a backport of functools.lru_cache). Notably, it does not depend on yt and it is written in pure Python.

Code of Conduct

The unyt package is part of The yt Project. Participating in unyt development therefore happens under the auspices of the yt community code of conduct. If for any reason you feel that the code of conduct has been violated, please send an e-mail to with details describing the incident. All emails sent to this address will be treated with the strictest confidence by an individual who does not normally participate in yt development.


The unyt package is licensed under the BSD 3-clause license.


If you make use of unyt in a publication we would appreciate a mention in the text of the paper or in the acknowledgements.

We have submitted a paper to the Journal of Open Source Software. A preprint is available on the arxiv. We would appreciate a citation (BibTeX) to the paper if you make use of unyt for work that leads to a publication.


unyt began life as a submodule of yt named yt.units.

It was separated from yt.units as its own package in 2018.

1.0.7 (2018-08-13)

Trigger zenodo archiving.

1.0.6 (2018-08-13)

Minor paper updates to finalize JOSS submission.

1.0.5 (2018-08-03)

unyt 1.0.5 includes changes that reflect the peew review process for the JOSS method paper. The peer reviewers were Stuart Mumfork (@cadair), Trevor Bekolay (@tbekolay), and Yan Grange (@ygrange). The editor was Kyle Niemeyer (@kyleniemeyer). The` unyt` development team thank our reviewers and editor for their help getting the unyt paper out the door as well as for the numerous comments and suggestions that improved the paper and package as a whole.

In addition we’d like to thank Mike Zingale, Meagan Lang, Maksin Ratkin, DougAJ4, Ma Jianjun, Paul Ivanov, and Stephan Hoyer for reporting issues.

  • Added docstrings for the custom exception classes defined by unyt. See PR #44.

  • Added improved documentation to the contributor guide on how to run the tests and what the PR review guidelines are. See PR #43.

  • Updates to the text of the method paper in response to reviewer suggestions. See PR #42.

  • It is now possible to run the tests on an installed copy of unyt by executing unyt.test(). See PR #41.

  • Minor edit to LICENSE file so GitHub recognizes it. See PR #40. Thank you to Kyle Sunden (@ksunden) for the contribution.

  • Add spatial frequency as a dimension and added support in the spectral equivalence for the spatial frequency dimension. See PR #38 Thank you to Kyle Sunden (@ksunden) for the contribution.

  • Add support for Python 3.7. See PR #37.

  • Importing unyt will now fail if numpy and sympy are not installed. See PR #35

  • Testing whether a unit name is contained in a unit registry using the Python in keyword will now work correctly for all unit names. See PR #31.

  • The aliases for megagram in the top-level unyt namespace were incorrectly set to reference kilogram and now have the correct value. See PR #29.

  • Make it possible to take scalars to dimensionless array powers with a properly broadcasted result without raising an error about units. See PR #23.

  • Whether or not a unit is allowed to be SI-prefixable (for example, meter is SI-prefixable to form centimeter, kilometer, and many other units) is now stored as metadata in the unit registry rather than as global state inside unyt. See PR #21.

  • Made adjustments to the rules for converting between CGS and MKS E&M units so that errors are only raised when going between unit systems and not merely when doing a complicated unit conversion invoving E&M units. See PR #20.

  • round(q) where q is a unyt_quantity instance will no longer raise an error and will now return the nearest rounded float. See PR #19.

  • Fixed a typo in the readme. Thank you to Paul Ivanov (@ivanov) for the fix.

  • Added smoot as a unit. See PR #14.

1.0.4 (2018-06-08)

  • Expand installation instructions

  • Mention paper and arxiv submission in the readme.

1.0.3 (2018-06-06)

  • Fix readme rendering on pypi

1.0.2 (2018-06-06)

  • Added a paper to be submitted to the Journal of Open Source Software.

  • Tweaks for the readme

1.0.1 (2018-05-24)

  • Don’t use setup_requires in

1.0.0 (2018-05-24)

  • First release on PyPI.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unyt-1.0.7.tar.gz (323.4 kB view hashes)

Uploaded Source

Built Distribution

unyt-1.0.7-py2.py3-none-any.whl (72.9 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page