问题标签 [awkward-array]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
897 浏览

python-3.x - 尴尬的数组:存储为 Parquet(不是 BitMasked)后如何获取 numpy 数组?

我想将不同长度的二维数组存储为 AwkwardArray,将它们存储为 Parquet,然后再次访问它们。问题是,从 Parquet 加载后,格式BitMaskedArray和访问性能有点慢。由以下代码演示:

如果我们检查退货,我们会看到:

问题

如何从 Parquet 加载 AwkwardArray 并快速访问 numpy 值?

来自自述文件(GitHub)的信息

awkward.fromparquet正在延迟加载 Parquet 文件。

很好,这在做例如时会有所帮助pq_array[0][0][:1000]

新结构的下一层是锯齿状​​数组是位屏蔽的。尽管没有任何值可以为空,但这是 Parquet 格式化列数据的方式的产物。

我想没有办法解决这个问题。但是,这就是加载速度有点慢的原因吗?我仍然可以numpy.ndarray通过直接访问数据(无位掩码)来访问数据吗?

额外的尝试

用 Arrow 加载它,然后 Awkward:

0 投票
1 回答
53 浏览

python - ChunkedArray 的内容、开始和停止 - 由lazyarray 构建

我有一些代码可以很好地JaggedArrays提取content, starts, stops,但我想在一些 上运行相同的代码ChunkedArrayslazyarraysuproot. 不幸的是,我得到了以下错误:

有什么办法可以使这个工作吗?

0 投票
1 回答
41 浏览

awkward-array - 在笨拙数组备份的子集上传播选择

有没有更好的方法来做这个逻辑?我想从仅在内部元素子集上可用的较低级别选择中传播选择

具体来说,我希望降低带相反电荷的 μ 电子对的事件水平。

0 投票
2 回答
367 浏览

physics - 使用 uproot.daskframes 从许多 ROOT 文件创建 daskframe 时如何避免“打开的文件过多”错误

我想尝试使用 uproot 将一些带有平面 ROOT NTupels 的根文件读入桌面框架。214 个文件,每个 500kb,每个大约 8000 行和 16 列/变量。它们很容易适应内存中的 pandas 数据框,但我正在尝试学习 dask(和 uproot,以前只使用 root_pandas),因为我希望将来会有更大的数据集。

所以我认为这uproot.daskframes(list_of_paths, flatten=True)将是把文件读入桌面框架的工具。很好地创建框架,但在以下Too many open files错误中计算它:https://pastebin.com/mfHgB16Q。当我将文件限制为例如 100 个时,它的计算工作但很慢(30 秒),在少数文件上,没问题。当我使用 100 个文件并增加篮子(例如 100Mb)以提高速度时,我得到一个RecursionErrorhttps ://pastebin.com/xTHa1Wav

我自己的解决方案是创建带有连根拔起的普通熊猫数据框,延迟创建并使用 dask 创建连接它们,这对我来说效果很好,并且比uproot.daskframes大量文件的计算速度更快。

延迟数据帧创建的好处是我可以使用 dask 来并行化它。

但我觉得应该有一些规范的方式,可能是我缺少的东西,也许还有其他选项我应该用于该daskframes功能,或者我应该完全使用其他功能来做到这一点。你能帮我有什么想法吗或最佳实践?

0 投票
1 回答
155 浏览

python - 将笨拙的数组 JaggedArray 内容和偏移量组合成嵌套的 JaggedArray

我正在尝试使用优秀的uprootawkward-array读取存储在 TTree 中的一些分析数据。我知道 ROOT 不会std::vector<std::vector<int>>以柱状格式编写嵌套向量(即。),但是在讨论之后,我修改了我的树输出以包含两个单独std::vector<int>的分支:一个包含内容,一个std::vector<int>包含偏移量。内容向量在填充树之间多次将值推入其中。每次推入值时,内容向量的大小都会存储在偏移量中。

JaggedArray我的想法是,当我阅读树时,我将通过嵌套重新创建我需要的结构。但是,通过阅读笨拙的数组文档,我似乎无法找到正确的方法来构建这个嵌套JaggedArray而不在 python 中循环。fromoffsets需要一维索引,这意味着锯齿状索引必须变平,然后失去其结构。其他classmethods 似乎都不适合。下面的示例使用了一个生成器,由于在 python 中循环,我认为它会相当慢。有没有更好的方法来构建JaggedArray?或者更好的方法将数据存储在树中?

谢谢!

0 投票
0 回答
57 浏览

awkward-array - 有没有办法在没有 fromiter() 的情况下堆叠 JaggedArrays?

我有两个相同长度的 2D JaggedArrays(轴 = 0),我想在轴 = 1 中堆叠。例如:

我想得到这个 JaggedArray:

我可以通过以下方式得到这个:

但是有没有办法直接在中完成此操作awkward,而不必fromiter()在嵌套的 numpy 数组上使用?

0 投票
1 回答
51 浏览

awkward-array - 如何在笨拙的数组中复制锯齿状数组

在尴尬0中,我想分别保留表格的各种选择

在伪代码中

但我注意到任何索引锯齿状数组的内容都不会改变(只有开始停止变薄),因此天真地保存开始,以这种方式停止会导致磁盘上的数据重复。有没有办法“重新打包”锯齿状阵列,使它们再次变得密集?

0 投票
0 回答
51 浏览

awkward-array - 将列附加到笨拙的表

我正在尝试将新列附加到现有的尴尬表中。自述文件说这是可能的,但我找不到方法。例如我有一张桌子

我想添加两列,例如

有没有办法做到这一点?非常感谢。

0 投票
0 回答
107 浏览

python - Python AwkwardArray:如何定义循环数组?

我一直在寻找一种方法来创建:

  • 有界

  • 循环的

  • 连续

  • numpyable API

大批。

我遇到了AwkwardArray,但无法理解doc,它非常冗长,但对我的术语来说没有索引。

我想定义一个数组并使用它,就像我想要一个双端队列[使用 numpy API,使用形状]

我不想要双端队列,因为它是一个双向链表,切片速度很慢。

如何使用带有连续内存的 AwkwardArray 执行此操作?

0 投票
1 回答
131 浏览

python - 另一个 JaggedArray 中一个 JaggedArray 的元素的尴尬数组测试

我需要对 JaggedArray 执行计算,但前提是 JaggedArray 中的元素包含在另一个 JaggedArray 中。True如果元素是另一个 JaggedArray 或False其他(即应该是np.array) ,我想收到一个掩码。我一直在寻找一种在笨拙数组版本 0 或 1 中执行此操作的方法。但是,我无法找到直接的方法。in似乎不起作用,我还没有找到等效的np.isin(...)(在本期中提到,但似乎已经关闭而没有替换)。具体来说,我正在寻找:

对于尴尬0,我得到:

我还尝试了其他一些变化,比如selected_array.pad(1).fillna(-10).flatten() in full_array没有成功。我确实找到了一种解决方法,但它似乎相当间接:

对于尴尬1,我得到了一个结果,但它似乎是错误的(或者我不确定这意味着什么)。

是否有更直接的方法来测试 JaggedArray 中的元素?我是否以某种方式滥用in?对于每个 JaggedArray 条目有多个值的情况,解决方法不起作用怎么办?

谢谢!