2

我想将[(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
4

3 回答 3

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')])
于 2012-10-10T13:34:30.277 回答
3
>>> np.array([(3, 0, 1)]).astype('float')
array([[ 3.,  0.,  1.]])

你的代码看起来不一样吗?

于 2012-10-10T13:06:16.170 回答
1

嗯......我能哄它的唯一方法是:

a = np.rec.array([(1,2,3)])
np.array(list(a[0]),dtype='float')

对于 N 维数组:

a = np.array(map(list,d),dtype='float')

希望其他人会出现更好的方法......

于 2012-10-10T13:17:26.420 回答