我想采用具有多个命名字段的现有数组,并创建一个新数组(或将其更改到位),其中一个字段的分层 dtype 等于原始 dtype。那是,
newarray = np.array(oldarray, dtype=[('old',oldarray.dtype)])
这样newarray['old']
在形状和结构上与oldarray
这是一个例子:
In [1]: import numpy as np
In [2]: dt = np.dtype([('name',np.str_,2),('val',np.float_)])
In [3]: constants = np.array([('pi',3.14),('e',2.72)],dtype=dt)
In [4]: constants
Out[4]:
array([('pi', 3.14), ('e', 2.72)],
dtype=[('name', '|S2'), ('val', '<f8')])
In [5]: numbers = constants.astype([('constants',dt)])
但这给了我所有的零:
In [6]: numbers
Out[6]:
array([(('', 0.0),), (('', 0.0),)],
dtype=[('constants', [('name', '|S2'), ('val', '<f8')])])
如果我尝试制作副本,我也会遇到同样的问题:
In [7]: numbers = np.array(constants,dtype=[('constants',dt)])
In [8]: numbers
Out[8]:
array([(('', 0.0),), (('', 0.0),)],
dtype=[('constants', [('name', '|S2'), ('val', '<f8')])])
另外:有人知道为什么会这样吗?