如何用numpy将特定格式bin文件读取成Python数据结构?

2026-04-19 22:232阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1079个文字,预计阅读时间需要5分钟。

如何用numpy将特定格式bin文件读取成Python数据结构?

目录使用numpy按一定格式读取bin文件重点介绍:fromfile方法读取bin文件总结使用numpy按一定格式读取bin文件在Python环境中,使用numpy库可以方便地读取bin文件。以下是如何使用numpy的`fromfile`方法来读取bin文件的步骤:

1. 导入numpy库

2.使用`fromfile`方法读取bin文件

重点介绍:fromfile方法读取bin文件

`fromfile`方法是numpy库中用于从二进制文件中读取数据的一种方法。以下是如何使用`fromfile`方法的示例:

pythonimport numpy as np

读取bin文件data=np.fromfile('filename.bin', dtype=np.float32)

输出读取的数据print(data)

总结使用numpy的`fromfile`方法可以有效地读取bin文件。这种方法在处理大型数据集时尤其有用,因为它可以提供快速的读取速度和高效的数据处理能力。在Python环境下,这种方法类似于在Matlab中使用相应的功能。

目录
  • 使用numpy按一定格式读取bin文件
    • 这里重点介绍fromfile
  • python读取bin文件并下发串口
    • 总结

      如何用numpy将特定格式bin文件读取成Python数据结构?

      使用numpy按一定格式读取bin文件

      python环境下,如何使用numpy像matlab一样按一定格式读取bin文件?

      bin文件就是将数据按16进制形式存储的二进制文件(binary),可以使用WINHEX、Notepad++(需安装插件)等以16进制形式打开,如图用notepad++打开。

      由于使用python中的read()读取二进制文件时是以字符串形式读取,且每次只能读取一个字节,十分不方便。

      偶然发现可以使用numpy中的fromfile按指定格式对bin文件进行读写,方便了许多。

      NumPy提供了多种存取数组内容的文件操作函数。

      保存数组数据的文件可以是二进制格式或者文本格式。

      二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型。

      • tofile()将数组中的数据以二进制格式写进文件
      • tofile()输出的数据不保存数组形状和元素类型等信息
      • fromfile()函数读回数据时需要用户指定元素类型,并对数组的形状进行适当的修改

      这里重点介绍fromfile

      numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0, *, like=None) 

      • file是待读取内容,可以是文件、路径、字符串
      • dtype返回数组的数据类型。对于二进制文件,它用于确定文件中项目的大小和字节顺序。支持大多数内置数字类型,也支持扩展类型。1.18.0开始支持复数格式
      • count:要读取的项目数量(不一定以字节为单位),count = -1表示读取所有项目(即完整文件)
      • sep:项目之间的分隔符(如果文件是文本文件)。空(“”)分隔符表示文件应被视为二进制文件。分隔符中的空格(“”)与零个或多个空格字符匹配。仅由空格组成的分隔符必须至少匹配一个空格
      • offset:距文件当前位置的偏移量(以字节为单位)。默认为0。仅允许用于二进制文件。可以和count搭配用于读取指定位置和长度的内容
      • like:引用对象以允许创建非NumPy数组的数组,如果传入一个像like一样支持 __array_function__协议的数组形式,结果将由它来定义。在这种情况下,它确保创建与通过此参数传入的对象兼容的数组对象。

      import numpy as np a = np.arange(24) b = np.fromfile("F:/a.bin", dtype=np.int32, count=5, offset=8) print(a, '\n', b)

      由上图可以看出,数据是以32位的十六进制数形式存储,也就是一个数占4个字节。(tofile写入数据的顺序为 ‘C’order)。

      此时,若设置count=5, offset=8,也就是从0开始偏移8个字节,读取5个数

      结果如图:

      python读取bin文件并下发串口

      # coding:utf-8 import time, serial from struct import * import binascii file = open('E:\\1.bin', 'rb') i = 0 while 1: c = file.read(1) # 将字节转换成16进制; ssss = str(binascii.b2a_hex(c))[2:-1] print(str(binascii.b2a_hex(c))[2:-1]) if not c: break ser = serial.Serial('COM3', 57600, timeout=1) ser.write(bytes().fromhex(ssss))# 将16进制转换为字节 if i % 16 == 0: time.sleep(0.001) #写每一行等待的时间 i += 1 ser.close() file.close()

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。

      本文共计1079个文字,预计阅读时间需要5分钟。

      如何用numpy将特定格式bin文件读取成Python数据结构?

      目录使用numpy按一定格式读取bin文件重点介绍:fromfile方法读取bin文件总结使用numpy按一定格式读取bin文件在Python环境中,使用numpy库可以方便地读取bin文件。以下是如何使用numpy的`fromfile`方法来读取bin文件的步骤:

      1. 导入numpy库

      2.使用`fromfile`方法读取bin文件

      重点介绍:fromfile方法读取bin文件

      `fromfile`方法是numpy库中用于从二进制文件中读取数据的一种方法。以下是如何使用`fromfile`方法的示例:

      pythonimport numpy as np

      读取bin文件data=np.fromfile('filename.bin', dtype=np.float32)

      输出读取的数据print(data)

      总结使用numpy的`fromfile`方法可以有效地读取bin文件。这种方法在处理大型数据集时尤其有用,因为它可以提供快速的读取速度和高效的数据处理能力。在Python环境下,这种方法类似于在Matlab中使用相应的功能。

      目录
      • 使用numpy按一定格式读取bin文件
        • 这里重点介绍fromfile
      • python读取bin文件并下发串口
        • 总结

          如何用numpy将特定格式bin文件读取成Python数据结构?

          使用numpy按一定格式读取bin文件

          python环境下,如何使用numpy像matlab一样按一定格式读取bin文件?

          bin文件就是将数据按16进制形式存储的二进制文件(binary),可以使用WINHEX、Notepad++(需安装插件)等以16进制形式打开,如图用notepad++打开。

          由于使用python中的read()读取二进制文件时是以字符串形式读取,且每次只能读取一个字节,十分不方便。

          偶然发现可以使用numpy中的fromfile按指定格式对bin文件进行读写,方便了许多。

          NumPy提供了多种存取数组内容的文件操作函数。

          保存数组数据的文件可以是二进制格式或者文本格式。

          二进制格式的文件又分为NumPy专用的格式化二进制类型和无格式类型。

          • tofile()将数组中的数据以二进制格式写进文件
          • tofile()输出的数据不保存数组形状和元素类型等信息
          • fromfile()函数读回数据时需要用户指定元素类型,并对数组的形状进行适当的修改

          这里重点介绍fromfile

          numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0, *, like=None) 

          • file是待读取内容,可以是文件、路径、字符串
          • dtype返回数组的数据类型。对于二进制文件,它用于确定文件中项目的大小和字节顺序。支持大多数内置数字类型,也支持扩展类型。1.18.0开始支持复数格式
          • count:要读取的项目数量(不一定以字节为单位),count = -1表示读取所有项目(即完整文件)
          • sep:项目之间的分隔符(如果文件是文本文件)。空(“”)分隔符表示文件应被视为二进制文件。分隔符中的空格(“”)与零个或多个空格字符匹配。仅由空格组成的分隔符必须至少匹配一个空格
          • offset:距文件当前位置的偏移量(以字节为单位)。默认为0。仅允许用于二进制文件。可以和count搭配用于读取指定位置和长度的内容
          • like:引用对象以允许创建非NumPy数组的数组,如果传入一个像like一样支持 __array_function__协议的数组形式,结果将由它来定义。在这种情况下,它确保创建与通过此参数传入的对象兼容的数组对象。

          import numpy as np a = np.arange(24) b = np.fromfile("F:/a.bin", dtype=np.int32, count=5, offset=8) print(a, '\n', b)

          由上图可以看出,数据是以32位的十六进制数形式存储,也就是一个数占4个字节。(tofile写入数据的顺序为 ‘C’order)。

          此时,若设置count=5, offset=8,也就是从0开始偏移8个字节,读取5个数

          结果如图:

          python读取bin文件并下发串口

          # coding:utf-8 import time, serial from struct import * import binascii file = open('E:\\1.bin', 'rb') i = 0 while 1: c = file.read(1) # 将字节转换成16进制; ssss = str(binascii.b2a_hex(c))[2:-1] print(str(binascii.b2a_hex(c))[2:-1]) if not c: break ser = serial.Serial('COM3', 57600, timeout=1) ser.write(bytes().fromhex(ssss))# 将16进制转换为字节 if i % 16 == 0: time.sleep(0.001) #写每一行等待的时间 i += 1 ser.close() file.close()

          总结

          以上为个人经验,希望能给大家一个参考,也希望大家多多支持自由互联。