我有一个由NumPy创建的二进制矩阵。矩阵有5行32列。
array([[1, 1, ..., 1, 1],
[0, 1, ..., 0, 1],
[1, 1, ..., 0, 1],
[0, 0, ..., 1, 0],
[1, 1, ..., 0, 1]])
我将矩阵行转换为字符串,然后转换为整数。
str = ''.join(map(str,array[0])).replace(' ','')
int(str, base=2)
如何将字符串转换为浮点数(float32-IEEE-754 single)?
>>> a = [0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0,
... 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1]
>>> i = int(''.join(map(str, a)), 2)
>>> import struct
>>> struct.unpack('f', struct.pack('I', i))[0]
1.100000023841858
import struct
matrix = array(...)
st_i = struct.Struct('I')
st_f = struct.Struct('f')
float_values = [
st_f.unpack(st_i.pack(int(''.join(map(str, a)), 2)))
for a in matrix
]
注:根据阵列的字节顺序,你需要预先设置<
,>
结构形式之前。
顺便说一句,覆盖str
不是一个好主意。str
分配后不能使用功能/类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句