问题标签 [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.
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:
python - ChunkedArray 的内容、开始和停止 - 由lazyarray 构建
我有一些代码可以很好地JaggedArrays
提取content
, starts
, stops
,但我想在一些 上运行相同的代码ChunkedArrays
,lazyarrays
从uproot
. 不幸的是,我得到了以下错误:
有什么办法可以使这个工作吗?
awkward-array - 在笨拙数组备份的子集上传播选择
有没有更好的方法来做这个逻辑?我想从仅在内部元素子集上可用的较低级别选择中传播选择
具体来说,我希望降低带相反电荷的 μ 电子对的事件水平。
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)以提高速度时,我得到一个RecursionError
:https ://pastebin.com/xTHa1Wav
我自己的解决方案是创建带有连根拔起的普通熊猫数据框,延迟创建并使用 dask 创建连接它们,这对我来说效果很好,并且比uproot.daskframes
大量文件的计算速度更快。
延迟数据帧创建的好处是我可以使用 dask 来并行化它。
但我觉得应该有一些规范的方式,可能是我缺少的东西,也许还有其他选项我应该用于该daskframes
功能,或者我应该完全使用其他功能来做到这一点。你能帮我有什么想法吗或最佳实践?
python - 将笨拙的数组 JaggedArray 内容和偏移量组合成嵌套的 JaggedArray
我正在尝试使用优秀的uproot
并awkward-array
读取存储在 TTree 中的一些分析数据。我知道 ROOT 不会std::vector<std::vector<int>>
以柱状格式编写嵌套向量(即。),但是在讨论之后,我修改了我的树输出以包含两个单独std::vector<int>
的分支:一个包含内容,一个std::vector<int>
包含偏移量。内容向量在填充树之间多次将值推入其中。每次推入值时,内容向量的大小都会存储在偏移量中。
JaggedArray
我的想法是,当我阅读树时,我将通过嵌套重新创建我需要的结构。但是,通过阅读笨拙的数组文档,我似乎无法找到正确的方法来构建这个嵌套JaggedArray
而不在 python 中循环。fromoffsets
需要一维索引,这意味着锯齿状索引必须变平,然后失去其结构。其他classmethod
s 似乎都不适合。下面的示例使用了一个生成器,由于在 python 中循环,我认为它会相当慢。有没有更好的方法来构建JaggedArray
?或者更好的方法将数据存储在树中?
谢谢!
awkward-array - 有没有办法在没有 fromiter() 的情况下堆叠 JaggedArrays?
我有两个相同长度的 2D JaggedArrays(轴 = 0),我想在轴 = 1 中堆叠。例如:
我想得到这个 JaggedArray:
我可以通过以下方式得到这个:
但是有没有办法直接在中完成此操作awkward
,而不必fromiter()
在嵌套的 numpy 数组上使用?
awkward-array - 如何在笨拙的数组中复制锯齿状数组
在尴尬0中,我想分别保留表格的各种选择
在伪代码中
但我注意到任何索引锯齿状数组的内容都不会改变(只有开始停止变薄),因此天真地保存开始,以这种方式停止会导致磁盘上的数据重复。有没有办法“重新打包”锯齿状阵列,使它们再次变得密集?
awkward-array - 将列附加到笨拙的表
我正在尝试将新列附加到现有的尴尬表中。自述文件说这是可能的,但我找不到方法。例如我有一张桌子
我想添加两列,例如
有没有办法做到这一点?非常感谢。
python - Python AwkwardArray:如何定义循环数组?
我一直在寻找一种方法来创建:
有界
循环的
连续
numpyable API
大批。
我遇到了AwkwardArray,但无法理解doc,它非常冗长,但对我的术语来说没有索引。
我想定义一个数组并使用它,就像我想要一个双端队列[使用 numpy API,使用形状]
我不想要双端队列,因为它是一个双向链表,切片速度很慢。
如何使用带有连续内存的 AwkwardArray 执行此操作?
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 条目有多个值的情况,解决方法不起作用怎么办?
谢谢!