首页 > 编程语言 >Lnton 羚通算法算力云平台如何在 python 中对列表进行循环修改索引操作

Lnton 羚通算法算力云平台如何在 python 中对列表进行循环修改索引操作

时间:2023-09-02 18:00:38浏览次数:77  
标签:rand python list gap int num 羚通 starti Lnton


 Python列表修改索引

任务:

随机数生成

文件读写

数据分析, 连续N个数里 1 出现的起止位置

修改列表的循环索引

可用于异常数据分析

"""
任务:
1. 随机数生成
2. 文件读写
3. 数据分析, 连续N个数里 1 出现的起止位置 
4. 修改列表的循环索引
5. 可用于异常数据分析

注: 该程序主要用于学习使用, 不推荐用于生产环境
"""

import numpy as np 


def generate_rand_save(low:int=0, high:int=5, num:int=1000):
    """
    生成随机整数, 最小为low, 最大为 high-1, 个数为 num
    生成随机数字并保存下来,方便后续调试使用
    """
    rand_list = np.random.randint(low, high, num)
    with open('rand_save.txt', 'w') as f:
        f.write('\n'.join(map(str, rand_list)))
    print(rand_list)
    return rand_list

def read_rand(filename: str="rand_save.txt"):
    """
    read_rand 
        从文件中读取数据
    Args:
        filename (str, optional): _description_. Defaults to "rand_save.txt".

    Returns:
        _type_: _description_
    """
    rand_list = []
    f = open(filename, "r",encoding='utf-8')
    line = f.readline()
    while line:
        rand_data = int(line)
        rand_list.append(rand_data)
        line = f.readline()
    f.close()
    print("**"*50)
    print(rand_list)
    return rand_list


def find_continue_with_gap(low:int=0, high:int=5, num:int=1000, gap_num:int=5, tag_num: int=4):
    """
    test 连续 gap_num 个数里 tag_num 出现的起止位置, tag_num 之间的间隔小于 gap_num 算连续, 大于 gap_num 结束
    Args:
        gap_num (int, optional): 连续的间隔. Defaults to 5.
        tag_num (int, optional): 标记的数字. Defaults to 1.
    """
    ## 生成1000个随机数(0~5)
    rand_list = generate_rand_save(low, high, num)
    
    # 通过文件读取随机数
    # rand_list = read_rand()
    
    # 片段列表
    patch_list = []
    
    starti, startj = 0, 0
    num = len(rand_list)
    one_num = 0   # 连续 1 的个数
    other_num = 0  # 其他数字连续个数
    end = 0
    while starti < num:
        info_ = {}
        
        # 如果遇到1就从该处往后找 gap_num 个数
        if rand_list[starti] == tag_num:
            one_num += 1
            other_num = 0
            info_["start"] = starti
            info_["end"] = starti
            startj = starti            
            while startj < num:
                startj += 1
                if startj >= num:
                    end = 1
                    break
                # 如果出现了 1, 增加计数, 并且其他数字连续性置零
                if rand_list[startj] == tag_num:
                    one_num += 1
                    other_num = 0
                    info_["end"] = startj
                else:
                    other_num += 1
                    # 如果其他数字连续超过 gap_num, 并且 1 的个数超过 1, 则插入到列表
                    # 重新调整开始位置
                    if other_num >= gap_num:
                        if one_num > 1:
                            patch_list.append(info_)
                        one_num = 0
                        starti = startj + 1
                        break
            
            
        else:
            starti += 1

        if starti >= num or end == 1:
            if one_num > 1:
                patch_list.append(info_)
            break
    
    print("find *{}* continue with *{}* gap in rand_list".format(tag_num, gap_num))
    for ix in patch_list:
        print(ix)

    
if __name__ == '__main__':
    # find_continue_with_gap()
    find_continue_with_gap(low=5, high=20, num=1000, gap_num=50, tag_num=13)

Lnton羚通专注于音视频算法、算力、云平台的高科技人工智能企业。 公司基于视频分析技术、视频智能传输技术、远程监测技术以及智能语音融合技术等, 拥有多款可支持ONVIF、RTSP、GB/T28181等多协议、多路数的音视频智能分析服务器/云平台。

Lnton 羚通算法算力云平台如何在 python 中对列表进行循环修改索引操作_数据分析


标签:rand,python,list,gap,int,num,羚通,starti,Lnton
From: https://blog.51cto.com/LNTON/7334329

相关文章

  • 【Python】Python语言基础
    好久没有更新啦~~那么趁着高中信息技术的学科,就更新一下下吧(嘿嘿)坐标:ZJ输入输出输入语句:input()默认读入的变量类型为string字符串输出语句:print()输出的内容如有多个变量用逗号隔开赋值赋值符号为=赋值符号每一次赋值,都是将=后面的内容直接覆盖到前面的变量中算术......
  • python集合的操作(一)
    #一.有如下数据:#经理:[曹操,刘备,孙权]#技术员:[曹操,刘备,张飞,关羽]set_manager={"曹操","刘备","孙权"}set_technonlogyer={"曹操","刘备","张飞","关羽"}#1.1.既是经理也是技术员的有谁?print(set_manager&set_technonlogyer)#1.......
  • py之路——day14-20230902:python内置方法
    作者:zb1、python内置方法:abs()方法:取绝对值all()方法:all(iterable),如果iterable中的所有元素都为空或True,则返回True,否则返回False#all()方法print(all([0,1,-2]))print(all([1,1,2]))print(all([]))D:\oldboy_py\venv\Scripts\python.exeD:/oldboy_py/day4-2023......
  • Lnton 羚通视频分析算法平台【OpenCV-Python】教程: Depth Map from Stereo Images 立
    立体图像的深度图(DepthMap)是表示图像中每个像素点距离相机的深度或距离信息的二维灰度图。它提供了场景中物体的三维结构和距离信息,对于三维重建、增强现实、虚拟现实等应用具有重要意义。深度图可以通过以下方式获取:1.双目视觉方法:使用两个相机(左右摄像机)同时拍摄同一场景,通过计......
  • Python去除非法字符:让数据更干净、更有效
    Python去除非法字符:让你的数据更干净、更有效在处理数据时,非法字符是常见的问题。它们可能是一些无意义的符号、特殊字符或非常规字符等等。如果不被正确处理,这些非法字符可能会给你带来麻烦,如导致脚本失败、破坏数据完整性等。在这篇文章中,我们将介绍如何使用Python去除非法字符,......
  • Python中Mock和Patch的区别
    在测试并行开发(TPD)中,代码开发是第一位的。尽管如此,我们还是要写出开发的测试,并执行它们来验证代码的准确性(而不是直接运行代码或使用控制台)。在Python中,我们有一个叫做单元测试的过程,里面有mock和patch函数。这篇文章将讨论这两个角色的用途和区别。Mock和Patch对象库的用途......
  • Python中查找质因数
    如何在Python中进行素因式分解。质因数分解的概述在数学中,一个数的因数是指那些可以除以给定数并留下零余数的数字。质数是只有两个因数的独特数字,一个和数字本身。这类数字的一些例子是3,7,11,13,等等。素数因数化是指找到所有乘以原数的素数。我们可以考虑一个简单的例子:数......
  • Python中匹配模糊的字符串
    如何使用thefuzz库,它允许我们在python中进行模糊字符串匹配。此外,我们将学习如何使用process模块,该模块允许我们在模糊字符串逻辑的帮助下有效地匹配或提取字符串。使用thefuzz模块来匹配模糊字符串这个库在旧版本中有一个有趣的名字,因为它有一个特定的名字,这个名字被重新命......
  • 在Python中-datetime日期时间对象-日期时间字符串-时间戳之间的转换
    在python编程语言中的datetime模块,常用于对日期时间的处理,包括最常用到的日期时间格式,时间戳的转换,还有日期时间的计算今天笔者,主要讲一下,关于,日期时间对象-日期时间字符串-时间戳之间的转换首先在前面先整理几个知识点(1)、关于三者的转换,日期时间字符串与时间戳数字,是不能......
  • python基础语法之字符串
    字符串扩展1、字符串的三种定义方式单引号,双引号,三引号a='abc';b="sdf";c='''ewrc''';print(a,b,c);2、字符串的拼接#字符串字面量之间的拼接print("我是一名"+"大学生"+","+"学习智能医学工程");#字符串字面量和字符串变量的拼接name='......