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

干杯!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值