我有一个结构化数组,例如:
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
对象,那么您可能正在寻找以下内容:
orig_type = sa.dtype
descr = orig_type.descr
descr[1] = (descr[1][0], "|S10")
new_type = numpy.dtype(descr)
关于python - NumPy:以编程方式修改结构化数组的dtype,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5906428/