NumPy基础-结构化数组(三)

记录数组
作为一个可选的便利,NumPy提供了ndarray子类,该子类允许按属性而不是仅按索引访问结构化数组的字段。记录数组使用特殊的数据类型,该数据类型允许按属性访问从数组获得的结构化标量上的字段。numpy.rec模块提供了从各种对象创建recarrays的函数。
创建记录数组最简答的方法是使用numpy.rec.array:


NumPy基础-结构化数组(三)
文章图片
【NumPy基础-结构化数组(三)】numpy.rec.array可以将各种参数转换为记录数组,包括结构化数组:


NumPy基础-结构化数组(三)
文章图片
可以使用适当的视图获取结构化数组的记录数组例如:


NumPy基础-结构化数组(三)
文章图片
为了方便起见,将ndarray作为类型查看numpy,recarray将自动转换为numpy.record数据类型,因此可以将dtype排除在视图之外:


NumPy基础-结构化数组(三)
文章图片
要返回普通的ndarray,必须同时重置dtype和type。如果记录器不是结构化类型的异常情况,我们可以这么做:


NumPy基础-结构化数组(三)
文章图片
如果字段具有结构化类型,则通过索引或属性访问的记录数组字段返回记录数组,否则返回为普通的ndarray。


NumPy基础-结构化数组(三)
文章图片
如果字段与ndarray属性具有相同的名称,则ndarray属性具有优先权,此类字段无法通过属性访问,但仍然可以通过索引访问。
Recarray辅助函数 用于操作结构化数组的实用程序。
将新字段添加到现有数组
字段的名称由名称参数给出,对应的值由数据参数给出,如果附加了单个字段,则name、data和dtypes不必是列表,而只需是值。
应用功能‘func’ 作为结构化数组中各个字段的简化
这类似于沿轴应用,但将结构化数组的字段视为额外的轴。首先将所有字段都按照类型提升规则换换为通用类型。然后再应用于字段的dtype。示例:


NumPy基础-结构化数组(三)
文章图片
通过字段名称将值从一个结构化数组分配给另一个
通常,将一个结构化数组分配给另一个“按位置”复制字段,这意味着src中的第一个字段将被复制到dst的第一个字段,依此类推,与字段名称无关。
相反,此函数按字段名进行复制,这样dst中的字段就从src中同名的字段进行分配,这将递归地应用于嵌套结构。
沿着给定键在结构化数组中查找重复项

NumPy基础-结构化数组(三)
文章图片
展平结构化数据类型描述

NumPy基础-结构化数组(三)
文章图片
返回一个字典,其中的字段索引了其父字段的列表
此功能用于简化对嵌套在其它字段中的字段的访问


NumPy基础-结构化数组(三)
文章图片
以元组形式返回输入数据类型的字段名称

NumPy基础-结构化数组(三)
文章图片


NumPy基础-结构化数组(三)
文章图片
以元组形式返回输入数据类型的字段名称,嵌套的结构预先被扁平化

NumPy基础-结构化数组(三)
文章图片
如果你想学习Python,但是找不到学习路径和资源,欢迎来指尖编程。
指尖编程第二届编程赛马上就要开始啦!赶紧上指尖编程报名赢取好礼吧!

    推荐阅读