跳转到主要内容

使用NumPy-like语法操作类似JSON的数据。

项目描述

PyPI version Conda-Forge Python 3.8‒3.12 BSD-3 Clause License Build Test

Scikit-HEP NSF-1836650 DOI Documentation Gitter

Awkward Array 是一个用于 嵌套、可变大小数据 的库,包括任意长度的列表、记录、混合类型和缺失数据,使用 类似 NumPy 的语法

数组是 动态类型 的,但对其的操作是 编译并快速 的。当数组维度规则时,它们的行为与 NumPy 相同,当它们不规律时,则进行推广。

动机示例

给定一个包含具有 xy 字段(在 y 字段中有嵌套列表)的对象列表的数组

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]}]
])

以下操作切片出 y 值,删除每个内部列表的第一个元素,并在剩余的所有内容上运行 NumPy 的 np.square 函数

output = np.square(array["y", ..., 1:])

结果是

[
    [[], [4], [4, 9]],
    [],
    [[4, 9, 16], [4, 9, 16, 25]]
]

仅使用 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)

使用 Awkward Array 的表达式更加简洁,使用了来自 NumPy 的熟悉语法,并且它还具有类似 NumPy 的性能。对于比上述问题大 1000 万倍的问题(在 2.2 GHz 处理器上的单线程),

  • Awkward Array 的一行代码运行只需 1.5 秒,并使用 2.1 GB 的内存,
  • 使用 Python 列表和字典的等效代码运行需要 140 秒,并使用 22 GB 的内存。

当在 Numba 的 JIT 编译函数中使用时,Awkward Array 的速度甚至更快。

请参阅 awkward-array.org 上的入门文档 以获取介绍,包括您可以在 Web 浏览器中尝试的 无安装演示

获取帮助

  • awkward-array.org 上查看文档。
  • GitHub Issues 上报告错误、请求功能以及请求额外的文档。
  • 如果您有一个 "我该如何..." 的问题,请从 "Q&A" 类别开始一个 GitHub Discussion
  • 或者,在带有 [awkward-array] 标签的 StackOverflow 上询问。请确保包括您使用的任何其他库的标签,例如 Pandas 或 PyTorch。
  • 要实时提问,请尝试 Gitter 的 Scikit-HEP/awkward-array 聊天室。

安装

Awkward Array 可以通过 pip 从 PyPI 安装

pip install awkward

awkward 包是纯 Python 的,并且它将作为依赖项下载 awkward-cpp 编译组件。如果您的平台和 Python 版本没有 awkward-cpp 二进制包(wheel),pip 将尝试从源代码编译它(这需要额外的依赖项,例如 C++ 编译器)。

Awkward Array 还可在 conda-forge 上找到

conda install -c conda-forge awkward

发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分布

awkward-2.6.8.tar.gz (6.1 MB 查看哈希值)

上传时间

构建分布

awkward-2.6.8-py3-none-any.whl (831.7 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面