我想将整数类型的记录[(1, 2, 3) (2, 2, 3)]
转换为浮点类型数组[(1.0, 2.0, 3.0), (2.0, 2.0, 3.0)]
。但是当我给出命令c.astype('float')
时,我得到的输出是rec.array([ 1., 2.])
。为什么从数组中删除其他元素?
有人可以给我正确的解决方案吗? 我是以正确的方式做到的吗?
更新
我从3个不同的数组创建了这样的记录 -
d=np.rec.fromarrays([a, b, c], names='x,y,z')
以便对它们进行排序并执行某些操作。
这是完整的代码 -
a=[1,2]
b=[2,2]
c=[3,3]
d=np.rec.fromarrays([a, b, c], names='x,y,z')
print d
d.astype('float')
print d
答案 0 :(得分:3)
>>> np.array([(3, 0, 1)]).astype('float')
array([[ 3., 0., 1.]])
您的代码看起来有什么不同吗?
答案 1 :(得分:3)
不雅但(显然)工作:
In [23]: import numpy as np
In [24]: a=[1,2]
In [25]: b=[2,2]
In [26]: c=[3,3]
In [27]: d=np.rec.fromarrays([a, b, c], names='x,y,z')
In [28]: d
Out[28]:
rec.array([(1, 2, 3), (2, 2, 3)],
dtype=[('x', '<i4'), ('y', '<i4'), ('z', '<i4')])
In [29]: d.astype([(k, float) for k in d.dtype.names])
Out[29]:
rec.array([(1.0, 2.0, 3.0), (2.0, 2.0, 3.0)],
dtype=[('x', '<f8'), ('y', '<f8'), ('z', '<f8')])
答案 2 :(得分:1)
嗯......我能哄的唯一方法是:
a = np.rec.array([(1,2,3)])
np.array(list(a[0]),dtype='float')
表示N维数组:
a = np.array(map(list,d),dtype='float')
希望其他人能有更好的方式......