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