Name | awkward JSON |
Version |
2.8.6
JSON |
| download |
home_page | None |
Summary | Manipulate JSON-like data with NumPy-like idioms. |
upload_time | 2025-07-31 02:37:58 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | None |
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>
[](https://pypi.org/project/awkward)
[](https://github.com/conda-forge/awkward-feedstock)
[](https://www.python.org)
[](https://opensource.org/licenses/BSD-3-Clause)
[](https://github.com/scikit-hep/awkward/actions/workflows/test.yml)
[](https://scikit-hep.org/)
[](https://doi.org/10.5281/zenodo.4341376)
[](https://awkward-array.org/)
[](https://gitter.im/Scikit-HEP/awkward-array)
[](https://nsf.gov/awardsearch/showAward?AWD_ID=1836650)
[](https://nsf.gov/awardsearch/showAward?AWD_ID=2103945)
[](https://nsf.gov/awardsearch/showAward?AWD_ID=2121686)
[](https://nsf.gov/awardsearch/showAward?AWD_ID=2323298)
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/_static/try-it.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 <jpivarski@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/db/f3/db21885d07c2350e8433c6e7cfff527810d956a6f1c04d39fa3645327032/awkward-2.8.6.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[](https://pypi.org/project/awkward)\n[](https://github.com/conda-forge/awkward-feedstock)\n[](https://www.python.org)\n[](https://opensource.org/licenses/BSD-3-Clause)\n[](https://github.com/scikit-hep/awkward/actions/workflows/test.yml)\n\n[](https://scikit-hep.org/)\n[](https://doi.org/10.5281/zenodo.4341376)\n[](https://awkward-array.org/)\n[](https://gitter.im/Scikit-HEP/awkward-array)\n\n[](https://nsf.gov/awardsearch/showAward?AWD_ID=1836650)\n[](https://nsf.gov/awardsearch/showAward?AWD_ID=2103945)\n[](https://nsf.gov/awardsearch/showAward?AWD_ID=2121686)\n[](https://nsf.gov/awardsearch/showAward?AWD_ID=2323298)\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/_static/try-it.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": null,
"summary": "Manipulate JSON-like data with NumPy-like idioms.",
"version": "2.8.6",
"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": null,
"digests": {
"blake2b_256": "cb5acf86c07da5d96a15d3689fec518dde128fb4cba01581be1dd31458640d02",
"md5": "131fb69098e3c1c0e25c229d1333b428",
"sha256": "a53a45b5ae23d635e25d4262571f1a56c2ebe48dcf60788cb38b82ffeaff66a8"
},
"downloads": -1,
"filename": "awkward-2.8.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "131fb69098e3c1c0e25c229d1333b428",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 886762,
"upload_time": "2025-07-31T02:37:55",
"upload_time_iso_8601": "2025-07-31T02:37:55.137471Z",
"url": "https://files.pythonhosted.org/packages/cb/5a/cf86c07da5d96a15d3689fec518dde128fb4cba01581be1dd31458640d02/awkward-2.8.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dbf3db21885d07c2350e8433c6e7cfff527810d956a6f1c04d39fa3645327032",
"md5": "005023f074712ec7f60158a923e293db",
"sha256": "86c8fceefec27e88ed21b4c46a07aee93a71f60e9c13d55978d91d9b5b7887ed"
},
"downloads": -1,
"filename": "awkward-2.8.6.tar.gz",
"has_sig": false,
"md5_digest": "005023f074712ec7f60158a923e293db",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 6223736,
"upload_time": "2025-07-31T02:37:58",
"upload_time_iso_8601": "2025-07-31T02:37:58.618492Z",
"url": "https://files.pythonhosted.org/packages/db/f3/db21885d07c2350e8433c6e7cfff527810d956a6f1c04d39fa3645327032/awkward-2.8.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-31 02:37:58",
"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"
}