我使用numpy的fromfile函数从二进制文件中读取数据。该文件包含一系列值(3*float32,3*int8,3*float32),我想将这些值提取到一个具有(rows,9)形状的numpy ndarray中。在with open('file/path', 'rb') as my_file:
my_dtype = np.dtype('>f4, >f4, >f4, >i1, >i1, >i1, >f4, >f4, >f4' )
my_array = np.fromfile( my_file, dtype = my_dtype )
print(my_array.shape)
print(type(my_array[0]))
print(my_array[0])
这个返回:
^{pr2}$
我怎样才能得到一个二维的nArray形状(38475732,9,)?
为什么返回的元组是'空荡荡的'?
重新定义问题:
如果我想从文件中读取的所有值都是,例如,我将使用4字节浮点np.D类型('9>;f4'),我会得到我需要的。但是,由于我的二进制文件包含不同的类型,有没有一种方法可以将所有值强制转换为32位浮点值?在
PS:我可以使用“struct”将二进制文件解析为列表,然后将该列表转换为ndarray,但这种方法比使用np.fromfile文件在
解决方案:
谢谢你的回答!我在代码中所做的是添加以下代码行,将numpy fromfile函数返回的recarray转换为预期的ndarray:my_array = my_array.astype('f4, f4, f4, f4, f4, f4, f4, f4, f4').view(dtype='f4').reshape(my_array.shape[0], 9)
它返回一个(38475732,9)ndarray
干杯!在