基于python,三种方案实现“numpy的dtype字段改名”需求
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔在本文中,所描述的numpy
类型变量,并不是普通常见的numpy
类型,并不是那些由普通一维list
转变而来的。它是list
内嵌tuple
,然后再转化为numpy
类型的变量。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验文章。测试环境:win10
,python@3.12.0
,numpy@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
经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。