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
>>> np.array([(3, 0, 1)]).astype('float')
array([[ 3.,  0.,  1.]])

あなたのコードは異なって見えますか?

于 2012-10-10T13:06:16.170 に答える
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 に答える
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 に答える