python定义结构体数组

 2023-10-14    123  

前言

numpy 结构化数组可以支持多数据类型的元素,类似于Python 内置的字典。

在前面,我们已经对numpy 结构化数组数据类型主要是使用 numpy.dtype 定义。

结构化数组的索引有三种形式:

  • 以字段名称为索引访问单个字段值
  • 以字段名称列表为索引访问多个字段值
  • 以整数标量为索引进行访问字段值

在结构化数组索引返回值的形式都是视图

numpy 模块提供了ndarray 子类 recarray,可以允许属性直接访问结构化数组字段。

我们在numpy 结构化数组之记录数组学习后,可以通过numpy.rec.array()方法进行创建记录数组或者将结构化数组转换成记录数组。

并且,numpy.lib.recfunctions中提供对结构化数组记录数组相关操作的方法。

本期,我们将学习recfunctions模块中常用的方法进行学习和使用,Let’s go~

1.numpy.lib.recfunctions概述

numpy.lib.recfunctions 存在大量用于创建和操作结构化数组的辅助方法集合

目前,recfunctions 里面的方法都已经被重写和拓展了。

我们可以在 numpy->lib->recfunctions.py 文件中看到相关方法介绍。

我们在使用 recfunctions 模块相关方法时,需要提前使用from导入recfunctions库

from numpy.lib import recfunctions as rfn复制代码

2. 添加新字段

numpy.lib.recfunctions 模块中提供 append_fields 方法,实现在现有的结构化数组中添加性字段

append_fields(base, names, data, dtypes=None, fill_value=-1, usemask=True, asrecarray=False)复制代码

参数说明:

参数

说明

base

需要拓展的数组

names

新字段名称

data

数组或者数据序列

dtypes

可选项,数据类型序列

fill_value

可选项,用于填充数组上缺失的数据

usemask

可选项,是否返回掩码数组

asrecarray

可选项,是否返回一个记录数组

  • 字段名称和名称参数需要一起给出
  • 对应的值和数据参数需要一起给出
  • 如果只附加单个字段,则names,data,dtypes 可以为值
>>> from numpy.lib import recfunctions as rfn>>> arr = np.array([("Tom",12,"Beijing"),("Anne",10,"Guangzhou"),("Kenty",15,"Shengzheng")],dtype=[("name","U5"),("age","i8"),("address","U5")])>>> rfn.append_fields(arr,"province",["hebei","guangdong","guangdong"],"S16")masked_array(data=[('Tom', 12, 'Beiji', b'hebei'), ('Anne', 10, 'Guang', b'guangdong'), ('Kenty', 15, 'Sheng', b'guangdong')], mask=[(False, False, False, False), (False, False, False, False), (False, False, False, False)], fill_value=('N/A', 999999, 'N/A', b'N/A'), dtype=[('name', '
  •  标签:  

原文链接:http://www.tpbz008.cn/post/37643.html

=========================================

http://www.tpbz008.cn/ 为 “电脑技术吧” 唯一官方服务平台,请勿相信其他任何渠道。