我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔在本文中,所描述的numpy类型变量,并不是普通常见的numpy类型,并不是那些由普通一维list转变而来的。它是list内嵌tuple,然后再转化为numpy类型的变量。

苏南大叔:基于python,三种方案实现“numpy的dtype字段改名”需求 - dtype字段改名
基于python,三种方案实现“numpy的dtype字段改名”需求(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验文章。测试环境:win10python@3.12.0numpy@1.26.1

前文回顾

回顾下面这两篇文章就可以了:

龙套数据定义

import numpy as np
data = [(1, '苏'), (2, '南')]
data = np.array(data, dtype=[('id', int), ('name', 'U10')])
print(data,data.dtype,data.dtype.names)

输出:

[(1, '苏') (2, '南')] [('id', '<i4'), ('name', '<U10')] ('id', 'name')

改变列名方案一

这个是直接更改原数据。

data.dtype = [('id2', int), ('name2', 'U10')]
print(data,data.dtype,data.dtype.names)

输出:

[(1, '苏') (2, '南')] [('id2', '<i4'), ('name2', '<U10')] ('id2', 'name2')

改变列名方案二

这个是使用.astype()生成新的数据。

data3 = data.astype([('id3', int), ('name3', 'U10')])
print(data3,data3.dtype,data3.dtype.names)

输出:

[(1, '苏') (2, '南')] [('id3', '<i4'), ('name3', '<U10')] ('id3', 'name3')

改变列名方案三

这个方案是利用一个叫做rename_fields()的函数。说实话,总感觉这个方案不是很靠谱。

from numpy.lib.recfunctions import rename_fields
data4 = rename_fields(data, {'id': 'id4', 'name': 'name4'})
print(data4,data4.dtype,data4.dtype.names)

输出:

[(1, '苏') (2, '南')] [('id4', '<i4'), ('name4', '<U10')] ('id4', 'name4')

类似思路的文章有:

结语

苏南大叔的更多python经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python