複数の名前付きフィールドを持つ既存の配列を取得し、元の dtype と等しい階層型 dtype を持つ 1 つのフィールドを持つ新しい配列を作成 (またはその場で変更) したいと考えています。あれは、
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')])])
また:なぜこれが起こっているのか誰か知っていますか?