python numpy实现多次循环读取文件 等间隔过滤数据示例

 更新时间:2020年03月14日 09:41:55   作者:未名亚柳  
这篇文章主要介绍了python numpy实现多次循环读取文件 等间隔过滤数据示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

numpy的np.fromfile会出现如下的问题,只能一次性读取文件的内容,不能追加读取,连续两次的np.fromfile读到的东西一样

如果数据文件太大(几个G或以上)不能一次性全读进去,需要追加读取

而我希望读到的donser1和donser2是连续的两段

(实际使用时,比如说读取的文件是二进制数据文件,每一块文件都包括包头+数据,希望将这两块分开获取,然后再做进一步处理)

代码:

import numpy as np

length=2500
plt_arr=np.linspace(0.0, 0.0, length*2048*16)
start=0
tail_size = 40  #40bit
num_size=16*1024-40 # 16kb -40b


def one_file(f, loop):
  global tail_size, num_size
  while loop:
    num = np.fromfile(f, dtype=np.int16, count=num_size)
    tail=np.fromfile(f, dtype=np.int16, count=tail_size)
    loop=loop-1
    yield num, tail

def main():
  file_path="E://1-gl300c.r3f"
  global length, plt_arr, start
  loop=length
  with open(file_path, 'rb') as f:
    for num, tail in one_file(f, loop):
      plt_arr[start:start+len(num)]=num[:]
      start=start+len(num)
  return   plt_arr[0:start]

if __name__ == "__main__":
  donser=main()
  print(donser)

假设数据文件的格式是 数据+包尾,plt_arr存储全部的数据部分,包尾丢弃,该方法实现了多次连续追加读取数据文件的内容plt_arr最好使用先开好大小再逐次赋值,亲测append方法和concatenate方法时间效率极差或者不用numpy也可以,代码:

def read_in_chunks(filePath, chunk_size=16*1024):
  file_object = open(filePath,'rb')
  count=0
  while True:
    chunk_data = file_object.read(chunk_size)
    if not chunk_data:
      break
    yield chunk_data[0:16*1024-28]


if __name__ == "__main__":
  num=0
  for chunk in read_in_chunks("E:\\1-gl300c.r3f"):
    #process(chunk) # <do something with chunk>
    name=str(num)+".bin"
    num=num+1
    if num<303000:
      continue
    if num>308001:
      break
    file_object = open(name, 'wb')
    file_object.write(chunk)
    file_object.close( )

numpy.fromfile的其他方法可以参考这个

补充知识:python每隔一段时间运行一个函数

用python语言每隔两分钟从接口获取一次数据来插入到数据库

看了大佬们的方法感觉最简单就是:

做一个死循环,让函数执行完后休眠两分钟,然后进入下一次执行,除非手动停止或者有错误停止,否则程序会永远运行下去。

以下是代码:

import get_details
import time

second=2*60
print second
while True:
get_details.sign_cycle()
time.sleep(second)

上面的代码就是让get_details模块的sign_cycle()函数每两分钟执行一次。

是不是超简单!!!!!!

以上这篇python numpy实现多次循环读取文件 等间隔过滤数据示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Python实现LLM的模型迁移

    使用Python实现LLM的模型迁移

    在当今的人工智能领域,大型语言模型(LLM)如GPT、BERT等已经成为了研究和应用的热点,但其训练和部署成本高昂,且在不同领域或任务间的迁移能力有限,因此,如何有效地实现LLM的模型迁移,成为了一个重要的研究方向,本文将深入探讨如何使用Python实现LLM的模型迁
    2025-02-02
  • Python实现删除list列表重复元素的方法总结

    Python实现删除list列表重复元素的方法总结

    在Python编程中,我们经常需要处理列表中的重复元素,这篇文章为大家介绍了五种高效的方法来删除列表中的重复元素,希望对大家有所帮助
    2023-07-07
  • Python字符遍历的艺术

    Python字符遍历的艺术

    通常我们要遍历一个字符串中的每个字符,都要先获取字符串的长度,然后用一个For循环把每个字符取出,进行处理。但是,又是我们的Python,为我们提供了很多便捷的方式去遍历一个字符串中的字符。
    2008-09-09
  • Python 数据筛选功能实现

    Python 数据筛选功能实现

    这篇文章主要介绍了Python 数据筛选,无论是在数据分析还是数据挖掘的时候,数据筛选总会涉及到,这里我总结了一下python中列表,字典,数据框中一些常用的数据筛选的方法,需要的朋友可以参考下
    2023-04-04
  • Python实现多条件筛选目标数据功能【测试可用】

    Python实现多条件筛选目标数据功能【测试可用】

    这篇文章主要介绍了Python实现多条件筛选目标数据功能,结合实例形式总结分析了Python3使用内建函数filter、pandas包以及for循环三种方法对比分析了列表进行条件筛选操作相关实现技巧与运行效率,需要的朋友可以参考下
    2018-06-06
  • 用Python实现KNN分类算法

    用Python实现KNN分类算法

    这篇文章主要为大家详细介绍了用Python实现KNN分类算法的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • OpenCV 图像分割实现Kmean聚类的示例代码

    OpenCV 图像分割实现Kmean聚类的示例代码

    本文主要介绍了OpenCV 图像分割实现Kmean聚类的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python按指定列的空值删除行的操作代码

    Python按指定列的空值删除行的操作代码

    这篇文章主要介绍了Python按指定列的空值删除行的操作代码,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • python重写方法和重写特殊构造方法

    python重写方法和重写特殊构造方法

    这篇文章主要介绍了python重写方法和重写特殊构造方法,对于父类的方法,只要他不符合子类模拟的实物的行为,都可以进行重写,更多相关内容需要的朋友可以参考一下
    2022-07-07
  • python代码过长的换行方法

    python代码过长的换行方法

    今天小编就为大家分享一篇python代码过长的换行方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论