将numpy数组类型:float32转换为char

时间:2014-02-25 06:46:31

标签: python numpy

我需要将float32类型的numpy数组转换为char,每个连续4个成员形成一个浮点数。所以生成的数组的长度应该是原始数据的4倍。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以尝试numpy.ndarray.tostring

x = NP.arange(0, 10, dtype=float)
s = NP.ndarray.tostring(x)

print len(x)
print len(s)
print repr(s)
print NP.fromstring(s, dtype=float)

输出:

10
80
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x08@\x00\x00\x00\x00\x00\x00\x10@\x00\x00\x00\x00\x00\x00\x14@\x00\x00\x00\x00\x00\x00\x18@\x00\x00\x00\x00\x00\x00\x1c@\x00\x00\x00\x00\x00\x00 @\x00\x00\x00\x00\x00\x00"@'
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]

在我的机器上,float类型是64位双精度,因此x的长度为10,s的长度为80.如果您打算与其他机器共享该字符串,请保持{记住{3}}。