python - NumPy:以编程方式修改结构化数组的 dtype

标签 python types numpy

我有一个结构化数组,例如:

import numpy as np
orig_type = np.dtype([('Col1', '<u4'), ('Col2', '<i4'), ('Col3', '<f8')])
sa = np.empty(4, dtype=orig_type)

sa 看起来像(随机数据):

array([(11772880L, 14527168, 1.079593371731406e-307),
       (14528064L, 21648608, 1.9202565460908188e-302),
       (21651072L, 21647712, 1.113579933986867e-305),
       (10374784L, 1918987381, 3.4871913811200906e-304)], 
      dtype=[('Col1', '<u4'), ('Col2', '<i4'), ('Col3', '<f8')])

现在,在我的程序中,我不知为何决定需要将“Col2”的数据类型更改为字符串。如何修改 dtype 来执行此操作,例如非编程方式:

new_type = np.dtype([('Col1', '<u4'), ('Col2', '|S10'), ('Col3', '<f8')])
new_sa = sa.astype(new_type)

new_sa 现在的样子,很棒:

array([(11772880L, '14527168', 1.079593371731406e-307),
       (14528064L, '21648608', 1.9202565460908188e-302),
       (21651072L, '21647712', 1.113579933986867e-305),
       (10374784L, '1918987381', 3.4871913811200906e-304)], 
      dtype=[('Col1', '<u4'), ('Col2', '|S10'), ('Col3', '<f8')])

如何以编程方式将 orig_type 修改为 new_type? (不要担心长度 |S10)。是否有一种“简单”的方法,或者我是否需要一个 for 循环来构造一个新的 dtype 构造函数对象?

最佳答案

没有捷径。您可以根据自己的喜好构建新的 dtype 并使用 .astype()

关于python - NumPy:以编程方式修改结构化数组的 dtype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5906428/

相关文章:

python - 如何将 picamera 视频帧转换为 openCV 对象

python - 设置x轴和y轴的值

python - Python 3类型注释和子类

swift - 是否可以在 Swift 中创建 "Positive Number"类型?

types - Impl Add 为类型别名元组 (f64, f64)

python - 多个矩阵的加权和

python - 使用带有列表理解的 python 关键字

python - 如何在一行中打印二维数组的行?

python - 如何在Python中引用重写的类函数

python - 赛通: "fatal error: numpy/arrayobject.h: No such file or directory"