awkward-array - 如何从尴尬.zip 创建的记录集合中删除字段?
问题描述
因此,已经使用创建了一个记录集合awkward.zip
;
import awkward
pineapple = awkward.from_iter([3, 4])
tofu = awkward.from_iter([5, 6])
pizza = awkward.zip({"pineapple": pineapple, "tofu": tofu})
我想从我正在使用的集合中删除其中一个记录/字段。我的第一个想法是做del pizza['pineapple']
,但这不起作用。我可以;
pizza = awkward.zip({name: pizza[name] for name in awkward.fields(pizza)
if name != 'pineapple'})
但我想知道我是否可以做一些更有效的事情。我不是要删除对象pineapple
,只是在pizza
.
解决方案
没有ak.Array.__del__
,但这并不意味着不可能有。但是,它的实现方式与上面的实现方式大致相同——它将建立一个新记录,其中包含除要删除的字段之外的所有字段。将数组放在一起作为记录或从记录中点出数组的 Amy 操作在数组长度上是O(1):它们仅更改元数据,例如重塑 NumPy 数组。我们通常只担心随数组长度缩放的事物的性能,因为这是可能会变大的参数(假设您的数组条目比记录字段多得多)。
您也可以使用切片而不是ak.zio
:
pizza = pizza[[x for x in ak.fields(pizza) if x != "pineapple"]]
无论记录在列表的嵌套列表中有多深,这都会起作用。请参阅嵌套投影。
推荐阅读
- java - 具有 IncomparableValueException 的比较器和未知值
- mysql - MySQL group_by+group_concat 缺少日期
- visual-studio - 远程调试 Azure 函数 - 带有 Visual Studio 2019 的 .netcoreapp3.1 框架
- sql - 错误的 PL/SQL - 值太多/缺少右括号
- javascript - 在构建 webpack 时删除所有调试器指令
- iframe - Google Drive Iframe 无法在 Safari 浏览器中播放视频
- javascript - 试图从另一个变量值引用一个变量
- powershell - 隐藏通信站点上一组用户的齿轮图标
- laravel - Laravel 作为数组加入 json 响应
- plsql - validate_conversion 不在包中编译,而是作为独立过程编译