Name | awkward JSON |
Version |
2.7.0
JSON |
| download |
home_page | None |
Summary | Manipulate JSON-like data with NumPy-like idioms. |
upload_time | 2024-11-08 01:24:20 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | BSD-3-Clause |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<a href="https://github.com/scikit-hep/awkward-1.0">
<img src="https://github.com/scikit-hep/awkward-1.0/raw/main/docs-img/logo/logo-300px.png">
</a>
[![PyPI version](https://badge.fury.io/py/awkward.svg)](https://pypi.org/project/awkward)
[![Conda-Forge](https://img.shields.io/conda/vn/conda-forge/awkward)](https://github.com/conda-forge/awkward-feedstock)
[![Python 3.9‒3.13](https://img.shields.io/badge/python-3.9%E2%80%923.13-blue)](https://www.python.org)
[![BSD-3 Clause License](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
[![Build Test](https://github.com/scikit-hep/awkward/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/scikit-hep/awkward/actions/workflows/test.yml)
[![Scikit-HEP](https://scikit-hep.org/assets/images/Scikit--HEP-Project-blue.svg)](https://scikit-hep.org/)
[![NSF-1836650](https://img.shields.io/badge/NSF-1836650-blue.svg)](https://nsf.gov/awardsearch/showAward?AWD_ID=1836650)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4341376.svg)](https://doi.org/10.5281/zenodo.4341376)
[![Documentation](https://img.shields.io/badge/docs-online-success)](https://awkward-array.org/)
[![Gitter](https://img.shields.io/badge/chat-online-success)](https://gitter.im/Scikit-HEP/awkward-array)
Awkward Array is a library for **nested, variable-sized data**, including arbitrary-length lists, records, mixed types, and missing data, using **NumPy-like idioms**.
Arrays are **dynamically typed**, but operations on them are **compiled and fast**. Their behavior coincides with NumPy when array dimensions are regular and generalizes when they're not.
# Motivating example
Given an array of lists of objects with `x`, `y` fields (with nested lists in the `y` field),
```python
import awkward as ak
array = ak.Array([
[{"x": 1.1, "y": [1]}, {"x": 2.2, "y": [1, 2]}, {"x": 3.3, "y": [1, 2, 3]}],
[],
[{"x": 4.4, "y": [1, 2, 3, 4]}, {"x": 5.5, "y": [1, 2, 3, 4, 5]}]
])
```
the following slices out the `y` values, drops the first element from each inner list, and runs NumPy's `np.square` function on everything that is left:
```python
output = np.square(array["y", ..., 1:])
```
The result is
```python
[
[[], [4], [4, 9]],
[],
[[4, 9, 16], [4, 9, 16, 25]]
]
```
The equivalent using only Python is
```python
output = []
for sublist in array:
tmp1 = []
for record in sublist:
tmp2 = []
for number in record["y"][1:]:
tmp2.append(np.square(number))
tmp1.append(tmp2)
output.append(tmp1)
```
The expression using Awkward Arrays is more concise, using idioms familiar from NumPy, and it also has NumPy-like performance. For a similar problem 10 million times larger than the one above (single-threaded on a 2.2 GHz processor),
* the Awkward Array one-liner takes **1.5 seconds** to run and uses **2.1 GB** of memory,
* the equivalent using Python lists and dicts takes **140 seconds** to run and uses **22 GB** of memory.
Awkward Array is even faster when used in [Numba](https://numba.pydata.org/)'s JIT-compiled functions.
See the [Getting started](https://awkward-array.org/doc/main/getting-started/index.html) documentation on [awkward-array.org](https://awkward-array.org) for an introduction, including a [no-install demo](https://awkward-array.org/doc/main/getting-started/try-awkward-array.html) you can try in your web browser.
# Getting help
* View the documentation on [awkward-array.org](https://awkward-array.org/).
* Report bugs, request features, and ask for additional documentation on [GitHub Issues](https://github.com/scikit-hep/awkward/issues).
* If you have a "How do I...?" question, start a [GitHub Discussion](https://github.com/scikit-hep/awkward/discussions) with category "Q&A".
* Alternatively, ask about it on [StackOverflow with the [awkward-array] tag](https://stackoverflow.com/questions/tagged/awkward-array). Be sure to include tags for any other libraries that you use, such as Pandas or PyTorch.
* To ask questions in real time, try the Gitter [Scikit-HEP/awkward-array](https://gitter.im/Scikit-HEP/awkward-array) chat room.
# Installation
Awkward Array can be installed from [PyPI](https://pypi.org/project/awkward) using pip:
```bash
pip install awkward
```
The `awkward` package is pure Python, and it will download the `awkward-cpp` compiled components as a dependency. If there is no `awkward-cpp` binary package (wheel) for your platform and Python version, pip will attempt to compile it from source (which has additional dependencies, such as a C++ compiler).
Awkward Array is also available on [conda-forge](https://conda-forge.org/docs/user/introduction.html#how-can-i-install-packages-from-conda-forge):
```bash
conda install -c conda-forge awkward
```
Raw data
{
"_id": null,
"home_page": null,
"name": "awkward",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Jim Pivarski <pivarski@princeton.edu>",
"download_url": "https://files.pythonhosted.org/packages/3d/32/408479603c58f511cfcedca696b7d9ba25ce0074e454b26e4f9b55a47d74/awkward-2.7.0.tar.gz",
"platform": null,
"description": "<a href=\"https://github.com/scikit-hep/awkward-1.0\">\n <img src=\"https://github.com/scikit-hep/awkward-1.0/raw/main/docs-img/logo/logo-300px.png\">\n</a>\n\n\n[![PyPI version](https://badge.fury.io/py/awkward.svg)](https://pypi.org/project/awkward)\n[![Conda-Forge](https://img.shields.io/conda/vn/conda-forge/awkward)](https://github.com/conda-forge/awkward-feedstock)\n[![Python 3.9\u20123.13](https://img.shields.io/badge/python-3.9%E2%80%923.13-blue)](https://www.python.org)\n[![BSD-3 Clause License](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\n[![Build Test](https://github.com/scikit-hep/awkward/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/scikit-hep/awkward/actions/workflows/test.yml)\n\n[![Scikit-HEP](https://scikit-hep.org/assets/images/Scikit--HEP-Project-blue.svg)](https://scikit-hep.org/)\n[![NSF-1836650](https://img.shields.io/badge/NSF-1836650-blue.svg)](https://nsf.gov/awardsearch/showAward?AWD_ID=1836650)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4341376.svg)](https://doi.org/10.5281/zenodo.4341376)\n[![Documentation](https://img.shields.io/badge/docs-online-success)](https://awkward-array.org/)\n[![Gitter](https://img.shields.io/badge/chat-online-success)](https://gitter.im/Scikit-HEP/awkward-array)\n\nAwkward Array is a library for **nested, variable-sized data**, including arbitrary-length lists, records, mixed types, and missing data, using **NumPy-like idioms**.\n\nArrays are **dynamically typed**, but operations on them are **compiled and fast**. Their behavior coincides with NumPy when array dimensions are regular and generalizes when they're not.\n\n# Motivating example\n\nGiven an array of lists of objects with `x`, `y` fields (with nested lists in the `y` field),\n\n```python\nimport awkward as ak\n\narray = ak.Array([\n [{\"x\": 1.1, \"y\": [1]}, {\"x\": 2.2, \"y\": [1, 2]}, {\"x\": 3.3, \"y\": [1, 2, 3]}],\n [],\n [{\"x\": 4.4, \"y\": [1, 2, 3, 4]}, {\"x\": 5.5, \"y\": [1, 2, 3, 4, 5]}]\n])\n```\n\nthe following slices out the `y` values, drops the first element from each inner list, and runs NumPy's `np.square` function on everything that is left:\n\n```python\noutput = np.square(array[\"y\", ..., 1:])\n```\n\nThe result is\n\n```python\n[\n [[], [4], [4, 9]],\n [],\n [[4, 9, 16], [4, 9, 16, 25]]\n]\n```\n\nThe equivalent using only Python is\n\n```python\noutput = []\nfor sublist in array:\n tmp1 = []\n for record in sublist:\n tmp2 = []\n for number in record[\"y\"][1:]:\n tmp2.append(np.square(number))\n tmp1.append(tmp2)\n output.append(tmp1)\n```\n\nThe expression using Awkward Arrays is more concise, using idioms familiar from NumPy, and it also has NumPy-like performance. For a similar problem 10 million times larger than the one above (single-threaded on a 2.2 GHz processor),\n\n * the Awkward Array one-liner takes **1.5 seconds** to run and uses **2.1 GB** of memory,\n * the equivalent using Python lists and dicts takes **140 seconds** to run and uses **22 GB** of memory.\n\nAwkward Array is even faster when used in [Numba](https://numba.pydata.org/)'s JIT-compiled functions.\n\nSee the [Getting started](https://awkward-array.org/doc/main/getting-started/index.html) documentation on [awkward-array.org](https://awkward-array.org) for an introduction, including a [no-install demo](https://awkward-array.org/doc/main/getting-started/try-awkward-array.html) you can try in your web browser.\n\n# Getting help\n\n * View the documentation on [awkward-array.org](https://awkward-array.org/).\n * Report bugs, request features, and ask for additional documentation on [GitHub Issues](https://github.com/scikit-hep/awkward/issues).\n * If you have a \"How do I...?\" question, start a [GitHub Discussion](https://github.com/scikit-hep/awkward/discussions) with category \"Q&A\".\n * Alternatively, ask about it on [StackOverflow with the [awkward-array] tag](https://stackoverflow.com/questions/tagged/awkward-array). Be sure to include tags for any other libraries that you use, such as Pandas or PyTorch.\n * To ask questions in real time, try the Gitter [Scikit-HEP/awkward-array](https://gitter.im/Scikit-HEP/awkward-array) chat room.\n\n# Installation\n\nAwkward Array can be installed from [PyPI](https://pypi.org/project/awkward) using pip:\n\n```bash\npip install awkward\n```\n\nThe `awkward` package is pure Python, and it will download the `awkward-cpp` compiled components as a dependency. If there is no `awkward-cpp` binary package (wheel) for your platform and Python version, pip will attempt to compile it from source (which has additional dependencies, such as a C++ compiler).\n\nAwkward Array is also available on [conda-forge](https://conda-forge.org/docs/user/introduction.html#how-can-i-install-packages-from-conda-forge):\n\n```bash\nconda install -c conda-forge awkward\n```\n\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Manipulate JSON-like data with NumPy-like idioms.",
"version": "2.7.0",
"project_urls": {
"Bug Tracker": "https://github.com/scikit-hep/awkward-1.0/issues",
"Chat": "https://gitter.im/Scikit-HEP/awkward-array",
"Discussions": "https://github.com/scikit-hep/awkward-1.0/discussions",
"Documentation": "https://awkward-array.org",
"Homepage": "https://github.com/scikit-hep/awkward-1.0",
"Releases": "https://github.com/scikit-hep/awkward-1.0/releases",
"Source Code": "https://github.com/scikit-hep/awkward-1.0"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f224bc9497221a4c635a1e71e294cb2e368bd2b506ad8853ae6782ffefbf6a4b",
"md5": "a92fd6df267f54d85a48c28e6cc1dd07",
"sha256": "e257f5d943313ca57ebe12c788a86a88a3fe133bcd5bebf04261de9047f6609d"
},
"downloads": -1,
"filename": "awkward-2.7.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a92fd6df267f54d85a48c28e6cc1dd07",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 863913,
"upload_time": "2024-11-08T01:24:16",
"upload_time_iso_8601": "2024-11-08T01:24:16.937395Z",
"url": "https://files.pythonhosted.org/packages/f2/24/bc9497221a4c635a1e71e294cb2e368bd2b506ad8853ae6782ffefbf6a4b/awkward-2.7.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3d32408479603c58f511cfcedca696b7d9ba25ce0074e454b26e4f9b55a47d74",
"md5": "9736db05c207518985e1ddc2fb320d2b",
"sha256": "b85c5d3442745028ef17d3390dd2bef44ac59a0787e2a9a535481bae4b02eb78"
},
"downloads": -1,
"filename": "awkward-2.7.0.tar.gz",
"has_sig": false,
"md5_digest": "9736db05c207518985e1ddc2fb320d2b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 6149614,
"upload_time": "2024-11-08T01:24:20",
"upload_time_iso_8601": "2024-11-08T01:24:20.698715Z",
"url": "https://files.pythonhosted.org/packages/3d/32/408479603c58f511cfcedca696b7d9ba25ce0074e454b26e4f9b55a47d74/awkward-2.7.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-08 01:24:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "scikit-hep",
"github_project": "awkward-1.0",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "awkward"
}