结构化数组

结构化数组是ndarray,其数据类型是由一系列命名字段组织的简单数据类型组成

结构化数据类型

结构化数据类型创建

元组列表,每个字段一个元组

每个元组都具有以下形式(字段名称、数据类型、形状),其中Shape是可选的。 fieldname 是字符串(如果使用标题,则为元组,请参见下面的字段标题), datatype 可以是任何可转换为数据类型的对象,而 shape 是指定子数组形状的整数元组。

如果 fieldname 是空字符串 '' ,则将为字段指定格式为 f# 的默认名称, 其中 # 是字段的整数索引,从左侧开始从0开始计数:

逗号分隔的数据类型规范字符串

在这个速记符号中,任何 字符串dtype规范 都可以在字符串中使用, 并用逗号分隔。 字段的项目大小和字节偏移是自动确定的,并且字段名称被赋予默认名称 f0f1等。

字段参数组字典

这是最灵活的规范形式,因为它允许控制字段的字节偏移和结构的项目大小。

字典有两个必需键 “names” 和 “format”,以及四个可选键 “offsets”、“itemsize”、“Aligned” 和 “title”。 名称和格式的值应该分别是相同长度的字段名列表和dtype规范列表。 可选的 “offsets” 值应该是整数字节偏移量的列表,结构中的每个字段都有一个偏移量。 如果未给出 “Offsets” ,则自动确定偏移量。可选的 “itemsize” 值应该是一个整数, 描述dtype的总大小(以字节为单位),它必须足够大以包含所有字段。

操作和显示结构化数据类型

可以names 在dtype对象的属性中找到结构化数据类型的字段名称列表:

dtype对象还具有类似字典的属性,fields其键是字段名称(和字段标题,见下文), 其值是包含每个字段的dtype和字节偏移量的元组。

索引和分配给结构化数组

#将数据分配给结构化数组

从Python本机类​​型(元组)分配

为结构化数组赋值的最简单方法是使用python元组。每个赋值应该是一个长度等于数组中字段数的元组,而不是列表或数组,因为它们将触发numpy的广播规则。元组的元素从左到右分配给数组的连续字段:

Scalars的赋值

分配给结构化元素的标量将分配给所有字段。将标量分配给结构化数组时,或者将非结构化数组分配给结构化数组时,会发生这种情况:

 结构化数组也可以分配给非结构化数组,但前提是结构化数据类型只有一个字段:

索引结构化数组

#访问单个字段

生成的数组是原始数组的视图。它共享相同的内存位置,写入视图将修改原始数组。

猜你喜欢

转载自www.cnblogs.com/leon-joker/p/12653422.html