python fromfile_在二进制文件上使用numpy fromfile返回1维ndarray

我使用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

干杯!在

你可能感兴趣的:(python,fromfile)