像Numpy一样容易地操作复杂数据结构的数组。
awkward0的Python项目详细描述
对于传统的Numpy数据,数值循环比传统的Numpy更快。例如,考虑一下
all_r=[]forx,yinzip(all_x,all_y):all_r.append(sqrt(x**2+y**2))
与
^{pr2}$后者不仅更易于阅读,而且比for循环快数百倍(并为隐藏的向量化和并行化提供了机会)。然而,Numpy抽象停留在数字或字符串的矩形数组上。虽然可以将任意Python数据放入Numpy数组中,但是Numpy的dtype=object本质上是一个固定长度的列表:数据在内存中不是连续的,并且操作没有向量化。在
baughtarray是一个纯Python+Numpy库,用于像处理Numpy数组一样处理复杂的数据结构。即使你的数据结构
- 包含可变长度列表(参差不齐)
- 深度嵌套(记录结构)
- 在同一列表中具有不同的数据类型(异构)
- 被屏蔽、位屏蔽或索引映射(可为空)
- 包含交叉引用甚至循环引用
- 需要是Python类实例
- 不是在每个点都定义(稀疏)
- 在内存中不是连续的
- 不应一次加载到内存中(lazy)
这个库可以以columnar data structures的形式访问它们,其效率相当于Numpy数组。它们可以从JSON或Python数据转换,从“awkd”文件、HDF5、Parquet或{a5}文件加载,也可以是像Arrow这样的内存缓冲区中的视图。在
安装
像其他Python包一样安装笨拙的数组:
pip install awkward0 # maybe with sudo or --user, or in virtualenv
基本awkward0包只需要Numpy(1.13.1+)。在
- 项目
标签: