问题标签 [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 回答
147 浏览

awkward-array - 有效地对另一个 JaggedArray 进行排序和过滤

我有一个JaggedArray( awkward.array.jagged.JaggedArray) 包含指向另一个位置的索引JaggedArray。两个数组具有相同的长度,但包含的每个数组numpy.ndarrays可以JaggedArrays具有不同的长度。我想使用第一个数组的索引对第二个数组进行排序,同时从第二个数组中删除未从第一个数组索引的元素。第一个数组还可以包含-1(如果需要,也可以替换为None,但目前不是这种情况)的值,这意味着第二个数组中没有匹配项。在这种情况下,第一个数组中的相应位置应设置为默认值(例如0)。

这是一个实际示例以及我目前如何解决此问题:

结果new_map是:[[1.1 0.0] [2.4 2.2 0.0] [0.0 3.1 0.0]]

有没有更有效/更快的方法来实现这一目标?我在想一个人可以使用numpy诸如 之类的功能numpy.where,但是由于长度不同ndarrays,至少对于我尝试的方式而言,这失败了。

0 投票
1 回答
251 浏览

uproot - 如何将两个连根拔起的锯齿状数组合并为一个

我正在使用带有尴尬阵列的连根拔起,并且有两个锯齿状阵列,其中包含每个事件的电子列表和每个事件的 μ 子列表。我如何结合这些来获得每个事件的轻子列表,即连接内轴

例如我有

我想要的输出是这样的

干杯,

卡尔

0 投票
1 回答
46 浏览

uproot - JaggedArray 可以计算最内层并返回另一个 JaggeredArray 吗?

当前版本 0.12.13 返回

但是,我只想计算最里面的部分,可以通过以下代码实现:

和输出看起来:

但它至少有两个缺点:速度慢和 dtype=object。有计划支持这种功能吗?

0 投票
1 回答
164 浏览

uproot - 我可以看一个切割数据以准备在根中进行直方图绘制的简短示例吗?

我正在使用 Python 3.6.5(或更高版本)并且我已经成功安装了“numpy”、“uproot”和“awkward”。我有一个以前制作的带有锯齿形 NTuple 的 *.root 文件,其中包含相当多的分支。这是粒子物理数据,因此可以将“行”视为单独的碰撞或“事件”,而列具有数据结构。(有些列可能有第三维或更多……我会稍微解释一下。)

在这种情况下,我的事件中有很多“喷气机”,每个“喷气机”都有很多关于它的信息。

jet_E、jet_pT、jet_eta、jet_phi、Numb(b 标签的数量)、NLayer0 等。

每个“事件”可以有任意数量的喷气机,但在这种情况下它不可能有零喷气机。这些喷气式飞机中的每一个都将存储此信息,但来自一个“事件”的所有信息必须与任何其他“事件”保持不相关。(如果您已经了解粒子物理学,这部分可能已经了解。)

我一直在阅读连根拔起的文档和示例,但我无法很容易地看到,仅使用这样的 pythonic 代码,将 jet_pT 直方图绘制成直方图,但仅适用于在某些其他 jet 变量被切断的事件中的喷气机。埃塔,例如。

如何仅从 *.root 文件中提取有关 jet_eta>-1.0 和 jet_eta<1.0 的喷气机的所有 jet_pT 的信息?假设无论如何我只想查看前 3 架喷气机而忽略其余的,我将如何放置所描述的切割并且仅在任何情况下通过该切割的前 3 架喷气机直方图?

uproot 文档并没有真正说明这一点。谢谢!

0 投票
0 回答
171 浏览

python-3.x - 尴尬的数组;根据索引列表从每一行中选择一个项目

所以挑战是这样的;给定一个带有 n 行的尴尬数组和一个包含 n 个索引(i_1 到 i_n)的列表,返回一个包含所有行的 row_m 元素 i_m 的列表。

这可以这样做;

但是,如果这是一个 numpy 数组,我们将可以访问choose,所以我们可以这样做;

第二个版本似乎扩展得更好,它在 12 行左右变得更快。笨拙的数组是否有等效的选择?

编辑; 也许这是一IndexedMaskedArray件事,但我无法让它做我想做的事。

0 投票
2 回答
274 浏览

arrays - 不同大小数组(锯齿状数组)的 Python 集合,Dask?

我有多个表示音频数据的不同大小的一维 numpy 数组。由于它们的大小不同(例如(8200,)(13246,)(61581,)),我不能将它们作为 1 个数组与 numpy 堆叠。尺寸差异太大,无法进行0-padding。

我可以将它们保存在列表或字典中,然后使用for循环遍历它们以进行计算,但我希望我可以以 numpy 样式处理它。在变量上调用 numpy 函数,而无需编写 for 循环。就像是:

暗阵列

看着这张 Dask 图片,我想知道我是否可以用 Dask 做我想做的事。

到目前为止,我的尝试是这样的:

问题

  1. 我是否误解了如何使用 Dask?
  2. 如果可能的话,我该如何做我的np.sum()例子?
  3. 如果可能的话,它实际上是否比高端单台 PC 上的 for 循环更快?
0 投票
0 回答
133 浏览

python - 使用 Chunked 数组(Akwkard 库)进行精美的索引或屏蔽

我正在加载一个根文件,uproot.lazyarrays()它会生成一个Table. 我计算了这个表的一个函数,它返回一个JaggedArray长度等于表长度的函数。这是 a 的形式ChunkedArray,我想将它用作掩码,应用于JaggedArray从表格派生的另一个,再次以 a 的形式ChunkedArray。但是,这似乎不起作用。

运行此程序时:partial_prediction = array[variable][additional_selection_mask] 我收到以下错误:

为了说明数组的样子,这里有一个打印代码:

输出以下内容

在这种情况下,additional_selection_mask不是 a JaggedArray,但在一般情况下,它可以是这样的,具有相同的形状array[variable]

0 投票
1 回答
221 浏览

arrays - 尴尬的数组:沿命名轴使用布尔掩码进行花式索引

我有一个二维音频数据集。这些音频片段的长度不同,因此我使用的是 Awkward Array。通过布尔掩码,我只想返回包含语音的部分。

表掩码尝试

似乎 aTable不能用于花哨的索引。

阵列掩码尝试

Numpy 等价物

表版本尝试;失败的

似乎还没有实现多维选择。

JaggedArray - Numpy 掩码版本;作品

JaggedArray - JaggedArray 掩码版本;作品

问题

  • 如何使用Table或使用命名维度(如xarray)进行有效的布尔掩码选择?
  • 多维选择会在Table中实施awkward-array,还是仅在 中实施awkward-1.0

库版本

0 投票
1 回答
327 浏览

arrays - AwkwardArray:可以将数组附加到现有的 Parquet 文件吗?

是否可以使用AwkwardArray ( awkward0) 附加到现有的镶木地板文件(由 AwkwardArray 编写)?

正常尴尬的镶木地板存储

以下代码创建了一个 Parquet 文件,其中包含一些 Awkward 数组(例如音频数据):

附加 Parquet(没有尴尬)

有关 Parquet 文件的 pyarrow 文档中,您可以使用以下命令扩展 Parquet 文件:

问题

使用 Awkward 数组可能会发生这样的事情吗?:

类似于 aawkward.table.schema或 an 的awkward.ParquetWriter()东西

实际上,我没有同时拥有两个数组。因此,在写入之前进行连接是不可能的。

或者是使用Apache Arrow之类的东西并在最后一次将所有内容写入磁盘的唯一可能性?

0 投票
1 回答
99 浏览

pandas - 来自 pandas 的 Arrow ListArray 与笨拙生成的箭头数组的结构有很大不同?

我遇到了以下问题,进行了一些测试,以证明 pyspark 中的纯 pyarrow UDF 与始终通过 pandas 相比的有用性。

产量

产生(在堆栈跟踪的末尾):

查看数组:

可以看到数组的内容和形状都是一样的,但是表面上没有可比性,非常反直觉。是否有充分的理由将没有 Null 的密集锯齿状结构表示为 BitMaskedArray?