【myz_tools】Python库 myz_tools:Python算法及文档自动化生成工具 - 0.2.0版更新

news2024/9/23 17:17:22

文章目录

  • 0.2.0 更新内容如下
        • 函数generate_2d_combinations_iter
        • 函数generate_row_permutations
        • 函数calculate_total_permutations
        • 函数display_combinations
        • 函数evaluate_list_similarity
        • 函数check_unique
  • 写在前面
  • 关于库
  • 库使用
  • 库内所有函数目录
  • 文件名称: common_maths.py
    • 函数部分:
        • 函数create_dir
        • 函数get_max_diff
        • 函数remove_outliers_iqr
        • 函数export_to_csv
        • 函数generate_2d_combinations_iter
        • 函数generate_row_permutations
        • 函数calculate_total_permutations
        • 函数display_combinations
        • 函数evaluate_list_similarity
        • 函数check_unique
  • 文件名称: source2md.py
    • 函数部分:
        • 函数dir2md
        • 函数extract_info
        • 函数all_save_markdown
        • 函数all2md
        • 函数extract_function_docs_from_file
        • 函数save_docs_to_markdown
        • 函数pyFun2md
  • 仓库的链接
  • END

0.2.0 更新内容如下

增加了6个函数

更新内容如下

函数generate_2d_combinations_iter
功能:
    传入一个三维数组,返回每个二维数组的所有元素组合的迭代器。如果设置了 `test_first_group` 参数True,
    则仅返回第一个二维数组的组合。

参数:
    data_3d (list): 一个三维列表,每个元素都是一个二维列表,表示多个二维数组。
    test_first_group (bool): 是否只生成第一个二维数组的组合。默认为 False。

返回值:
    generator: 一个生成器对象,按需生成每个二维数组的所有元素组合。

异常:
    ValueError: 如果输入的数据不是三维列表,则抛出异常。

示例:
    >>> data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
    >>> result_iter = generate_2d_combinations_iter(data)
    >>> for combinations in result_iter:
            # 每次拿到是一个二维列表的组合
    ...     print(list(combinations)) # [(1, 3), (1, 4), (2, 3), (2, 4)]
    下一次
    [(5, 7), (5, 8), (6, 7), (6, 8)]


    >>> result_iter = generate_2d_combinations_iter(data, test_first_group=True)
    >>> print(list(next(result_iter)))
    [(1, 3), (1, 4), (2, 3), (2, 4)]
函数generate_row_permutations
功能:
    传入一个二维数组,返回该二维数组中每一行元素所有可能的排列组合。


参数:
    data_2d (list): 一个二维列表,表示多个行数据。

返回值:
    generator: 生成器对象,按需生成每一行的所有排列组合并组合成二维数组。

异常:
    ValueError: 如果输入的二维数组为空或某行为空,则抛出异常。

示例:
    >>> data = [[1, 2], [3, 4]]
    >>> permutations = generate_row_permutations(data)
    >>> for perm in permutations:
    ...     print(perm)
    [[1, 2], [3, 4]]
    [[1, 2], [4, 3]]
    [[2, 1], [3, 4]]
    [[2, 1], [4, 3]]
函数calculate_total_permutations
功能:
    计算并返回二维数组中所有行的排列组合总数。

参数:
    data_2d (list): 一个二维列表,表示多个行数据。

返回值:
    int: 所有行排列组合的总数。

异常:
    ValueError: 如果输入的二维数组为空或某行为空,则抛出异常。

示例:
    >>> data = [[1, 2], [3, 4]]
    >>> total = calculate_total_permutations(data)
    >>> print(total)
    4
函数display_combinations
功能:
    打印二维数组中前 N 个排列组合,以检测组合生成的正确性。

参数:
    data_2d (list): 一个二维列表,表示多个行数据。
    N (int): 要打印的组合数量,默认为 5。

返回值:
    None

异常:
    ValueError: 如果输入的二维数组为空或某行为空,则抛出异常。

示例:
    >>> data = [[1, 2], [3, 4]]
    >>> display_combinations(data, N=2)
    [1, 2]
    [3, 4]

    [1, 2]
    [4, 3]
函数evaluate_list_similarity

evaluate_list_similarity 函数的各个评分方法都可以理解为“分数越小越好”的形式。

  1. 均方误差 (MSE)

    • 公式: MSE = 1 m ∑ i = 1 m ( d i − n ) 2 \text{MSE} = \frac{1}{m} \sum_{i=1}^{m} (d_i - n)^2 MSE=m1i=1m(din)2
    • 解释: 计算所有差值与目标值 n 的平方差的平均值。均方误差对较大的差异惩罚更严重,得分越小表示列表元素与目标值的接近程度越高。
  2. 平均绝对误差 (MAE)

    • 公式: MAE = 1 m ∑ i = 1 m ∣ d i − n ∣ \text{MAE} = \frac{1}{m} \sum_{i=1}^{m} |d_i - n| MAE=m1i=1mdin
    • 解释: 计算所有差值与目标值 n 的绝对差的平均值。与均方误差相比,平均绝对误差对所有差异的惩罚是均等的。得分越小表示列表元素与目标值的接近程度越高。
  3. 总分 (Total Score)

    • 公式: Total Score = ∑ i = 1 m ∣ d i − n ∣ \text{Total Score} = \sum_{i=1}^{m} |d_i - n| Total Score=i=1mdin
    • 解释: 计算所有差值与目标值 n 的绝对差的总和。总分直接反映了所有差异的累积程度。得分越小表示列表元素与目标值的接近程度越高。
功能:
    评估列表中元素间的差异与给定值 `n` 的接近程度。支持不同的评分方法,例如均方误差 (MSE)、绝对误差等。
    三种方式都是得分越小表示列表元素与目标值的接近程度越高
参数:
    lst (list of int/float): 需要评估的数字列表。
    n (int/float): 用于比较的参考值,计算差异的目标值。
    method (str): 选择的评分方法。支持 'MSE'(均方误差)、'MAE'(平均绝对误差)、'total_score'(总分)等。

返回值:
    float: 计算得出的评分值。

异常:
    ValueError: 如果输入的 `lst` 不是列表或 `n` 不是整数或浮点数,则抛出异常。
    TypeError: 如果 `lst` 中的元素不是整数或浮点数,则抛出异常。
    ValueError: 如果选择的评分方法不被支持,则抛出异常。

示例:
    >>> lst = [1, 3, 6, 10]
    >>> n = 2
    >>> score = evaluate_list_similarity(lst, n, method='MSE')
    >>> print(score)

    >>> score = evaluate_list_similarity(lst, n, method='MAE')
    >>> print(score)
函数check_unique
功能:
    检查传入的二维数组中的每个元素是否都是唯一的。如果所有元素唯一,返回 True;否则,返回 False。

参数:
    data (list of list): 一个二维列表,其中包含需要检查的元素。

返回值:
    bool: 如果所有元素都唯一,返回 True;否则,返回 False。

异常:
    TypeError: 如果输入的 `data` 不是一个二维列表,或包含非列表的元素,则抛出异常。

示例:
    >>> data = [[1, 2, 3], [4, 5, 6]]
    >>> check_unique(data)
    True

    >>> data = [[1, 2, 3], [3, 4, 5]]
    >>> check_unique(data)
    False


写在前面

本来最开始只是单纯的想整理一下常用到的各类算法,还有一些辅助类的函数,方便时间短的情况下快速开发。后来发现整理成库更方便些,索性做成库,通过pip install 直接可以安装使用

关于库

平时见到的各类算法大多数还是需要自己手动敲,比如四分位距法,还得知道了原理后详改代码,索性直接做成函数,直接传入原始数据,返回清洗后的数据。内部的话代码也已经开源,也做过几轮测试,所以不用担心会出现什么奇奇怪怪的BUG之类,当然如果有的话还请提出

库使用

安装方式

pip install myz_tools

安装后就能用

目前主要两部分,一个算法,一个是用于python文件转化为文档的函数,使用也很方便,支持自定义目录和指定输出到一个md或者各自转化的不同的md文件里面,虽然有Sphinx可以用,但是我还是期待可以找到一种更加简洁的方式快速解决问题

使用方式如下

from myz_tools.source2md import dir2md

dir2md("./待处理的目录")

dir2md会自动检查此目录下的所有的python文件并且生成文档,完整参数可以鼠标放到上面查看

image-20240815105239302


库内所有函数目录

文件名称: common_maths.py



函数部分:

函数create_dir
在指定路径下创建名称为{dir_name}的文件夹
Args:
    dir_name: 文件夹名称
    path: 要创建文件夹的路径,默认为当前路径

Returns:
    无
函数get_max_diff
参数:
    two_dimensional_array: 二维数组
返回值:
    每一列里面最大值和最小值的差值,类型是一个一维数组
功能:
    传入一个二维数组,函数返回每一列里面最大值和最小值的差值。
函数remove_outliers_iqr
参数:
    data: 二维数组
返回值:
    去除异常值后的二维数组和有效的行索引,类型是一个元组
功能:
    四分位距法去除传入的二维数组中的异常值,注意是对于每一列来说的自己的异常值
函数export_to_csv
参数:
    array_data: 二维数组,要保存的数据
    file_name: 字符串,CSV文件的名称(不包含扩展名)
    output_directory: 字符串,保存文件的目录路径,默认为当前目录
返回:
    None
功能:
    将给定的二维数组保存到指定目录中的CSV文件。如果文件已存在,则追加数据,并在每次写入时添加空行作为分隔符。
函数generate_2d_combinations_iter
功能:
    传入一个三维数组,返回每个二维数组的所有元素组合的迭代器。如果设置了 `test_first_group` 参数True,
    则仅返回第一个二维数组的组合。

参数:
    data_3d (list): 一个三维列表,每个元素都是一个二维列表,表示多个二维数组。
    test_first_group (bool): 是否只生成第一个二维数组的组合。默认为 False。

返回值:
    generator: 一个生成器对象,按需生成每个二维数组的所有元素组合。

异常:
    ValueError: 如果输入的数据不是三维列表,则抛出异常。

示例:
    >>> data = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
    >>> result_iter = generate_2d_combinations_iter(data)
    >>> for combinations in result_iter:
            # 每次拿到是一个二维列表的组合
    ...     print(list(combinations)) # [(1, 3), (1, 4), (2, 3), (2, 4)]
    下一次
    [(5, 7), (5, 8), (6, 7), (6, 8)]


    >>> result_iter = generate_2d_combinations_iter(data, test_first_group=True)
    >>> print(list(next(result_iter)))
    [(1, 3), (1, 4), (2, 3), (2, 4)]
函数generate_row_permutations
功能:
    传入一个二维数组,返回该二维数组中每一行元素所有可能的排列组合。


参数:
    data_2d (list): 一个二维列表,表示多个行数据。

返回值:
    generator: 生成器对象,按需生成每一行的所有排列组合并组合成二维数组。

异常:
    ValueError: 如果输入的二维数组为空或某行为空,则抛出异常。

示例:
    >>> data = [[1, 2], [3, 4]]
    >>> permutations = generate_row_permutations(data)
    >>> for perm in permutations:
    ...     print(perm)
    [[1, 2], [3, 4]]
    [[1, 2], [4, 3]]
    [[2, 1], [3, 4]]
    [[2, 1], [4, 3]]
函数calculate_total_permutations
功能:
    计算并返回二维数组中所有行的排列组合总数。

参数:
    data_2d (list): 一个二维列表,表示多个行数据。

返回值:
    int: 所有行排列组合的总数。

异常:
    ValueError: 如果输入的二维数组为空或某行为空,则抛出异常。

示例:
    >>> data = [[1, 2], [3, 4]]
    >>> total = calculate_total_permutations(data)
    >>> print(total)
    4
函数display_combinations
功能:
    打印二维数组中前 N 个排列组合,以检测组合生成的正确性。

参数:
    data_2d (list): 一个二维列表,表示多个行数据。
    N (int): 要打印的组合数量,默认为 5。

返回值:
    None

异常:
    ValueError: 如果输入的二维数组为空或某行为空,则抛出异常。

示例:
    >>> data = [[1, 2], [3, 4]]
    >>> display_combinations(data, N=2)
    [1, 2]
    [3, 4]

    [1, 2]
    [4, 3]
函数evaluate_list_similarity
功能:
    评估列表中元素间的差异与给定值 `n` 的接近程度。支持不同的评分方法,例如均方误差 (MSE)、绝对误差等。
    三种方式都是得分越小表示列表元素与目标值的接近程度越高
参数:
    lst (list of int/float): 需要评估的数字列表。
    n (int/float): 用于比较的参考值,计算差异的目标值。
    method (str): 选择的评分方法。支持 'MSE'(均方误差)、'MAE'(平均绝对误差)、'total_score'(总分)等。

返回值:
    float: 计算得出的评分值。

异常:
    ValueError: 如果输入的 `lst` 不是列表或 `n` 不是整数或浮点数,则抛出异常。
    TypeError: 如果 `lst` 中的元素不是整数或浮点数,则抛出异常。
    ValueError: 如果选择的评分方法不被支持,则抛出异常。

示例:
    >>> lst = [1, 3, 6, 10]
    >>> n = 2
    >>> score = evaluate_list_similarity(lst, n, method='MSE')
    >>> print(score)

    >>> score = evaluate_list_similarity(lst, n, method='MAE')
    >>> print(score)
函数check_unique
功能:
    检查传入的二维数组中的每个元素是否都是唯一的。如果所有元素唯一,返回 True;否则,返回 False。

参数:
    data (list of list): 一个二维列表,其中包含需要检查的元素。

返回值:
    bool: 如果所有元素都唯一,返回 True;否则,返回 False。

异常:
    TypeError: 如果输入的 `data` 不是一个二维列表,或包含非列表的元素,则抛出异常。

示例:
    >>> data = [[1, 2, 3], [4, 5, 6]]
    >>> check_unique(data)
    True

    >>> data = [[1, 2, 3], [3, 4, 5]]
    >>> check_unique(data)
    False


文件名称: source2md.py



函数部分:

函数dir2md
Args:
    source_dir: 待处理目录
    output_dir: 输出目录
    single_file: 是否将所有文件放到一个md文件中
函数extract_info
功能:
    解析python文件,提取函数和类信息
Args:
    file_path: 待处理文件路径
Returns:
    function_docs: 函数信息
    class_info: 类信息
函数all_save_markdown
功能:
    将提取的函数和类信息保存为markdown文件
Args:
    file_path: 待处理文件路径
    output_path: 保存路径
    function_docs: 函数信息
    class_info: 类信息
Returns:
    无
函数all2md
功能:调用,将一个python文件中的函数和类信息提取出来,并保存为markdown文件
Args:
    file_path: 字符串,python文件的路径
    output_path: 字符串,markdown文件的保存路径
Returns:
    无
函数extract_function_docs_from_file
从 Python 文件中提取函数的 docstring(注释部分)。

参数:
    file_path: 字符串,Python 文件的路径。

返回:
    字典,键为函数名,值为函数的 docstring。
函数save_docs_to_markdown
将函数的 docstring 保存到 Markdown 文件中。

参数:
    docs: 字典,包含函数名和 docstring 的映射。
    output_path: 字符串,Markdown 文件的保存路径。
函数pyFun2md
将 Python 文件中提取 docstring 并保存为 Markdown 文件。

参数:
    source_file: 字符串,源 Python 文件的路径。
    output_md: 字符串,输出 Markdown 文件的路径。


仓库的链接

如果使用中有问题或者是需要别的什么算法,欢迎到
Issues · yi/myz_tools - Gitee.com提Issues,我会逐个看过去的

END


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2050645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZooKeeper分布式协调系统介绍

1. ZooKeeper概述 1.1 ZooKeeper介绍 ZooKeeper 是 Apache 软件基金会的一个项目,它确实提供了一种非常有用的服务,用于维护分布式系统中的配置信息、命名、提供分布式同步和提供组服务等。它的核心是原子广播和大约一致性模型,这使得它能够…

CCF-GESP五级考级——初等数论,全网最精简的求最大公约数gcd和最小公倍数lcm方法(100%好使)

👑一、约数和因数的区别 约数必须在整除的前提下才存在,而因数是从乘积的角度来提出的。如果数与数相乘的积是数,是的因数。 1.约数只能对在整数范围内而言,而因数就不限于整数的范围。 举个栗子:。2和8是16的…

中仕公考:国考往年招录情况对比

2025年国考预计10月中旬启动,11月进行笔试。中仕为大家总结了往年的国考招录情况,希望能给大家一些参考。 2024年计划招录3.96万人。截止到考试结束,共有225.2万人参加了考试,参加考试人数与录用计划数之比约为57:1,2…

CSP-J 2023真题一轮

选择题 阅读题 第1题 第2题 第3题 完善程序 第1题 第2题 答案: 一、单选题 1-5 BDAAC 6-10 BCADA 11-15 ABBAD 二、阅读程序 1) 16. √ 17. √ 18. ⅹ 19.A 20.B 2) 21. √ 22. ⅹ 23. √ 24. D 25.B 26.D 3) 27. √ 28. √ 29…

EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角

随着科技的飞速发展,远程安防监控系统已经成为现代社会中不可或缺的一部分,无论是在小区、公共场所还是工业领域,安防监控都发挥着至关重要的作用。而EasyCVR作为一款功能强大的视频监控综合管理平台,其在构建远程安防监控系统方面…

谷歌浏览器下载文件被阻止怎么解除

在工作生活中,我们会使用谷歌浏览器下载各种各样的文件,不过偶尔会遇到文件下载被阻止的情况。为了解决这一问题,本文为大家分享了实用的措施建议,一起来了解一下吧。(本文由https://chrome.cmrrs.com/站点的作者进行编…

python爬取豆瓣电影数据

目录 一、背景 二、分析网站 1、ajax请求 三、代码实现 1、导包 2、面向对象实现 3、发送请求 4、解析数据 5、保存数据 6、定义主函数 7、实例化对象运行主函数 8、运行效果 四、以下是全部完整代码 五、报错解决 1、数据库连接报错 2、数据插入报错 一、背景…

136 只出现一次的数字

解题思路: \qquad 这道题目明确要求了时间复杂度为O(N),空间复杂度为O(1),不然借助哈希表很容易能够在O(N)的空间复杂度下解决。特殊的要求只能特殊处理,解这道题只能记住异或这种较特殊的运算方式。 \qquad 异或是对二进制数进…

《深入探究 @SpringBootApplication 注解的内部原理》

《深入探究 SpringBootApplication 注解的内部原理》 SpringBootApplication注解涵盖了 Spring Boot 的包扫描原理、自动装配原理等众多重要原理。接下来,我们将对该注解展开深入且详尽的研究。而研究上述原理的关键,在于剖析SpringBootApplication内部…

网上商品订单转手系统bootpf

TOC springboot408网上商品订单转手系统bootpf 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的…

【SpringBoot】SpringBoot框架的整体环境搭建和使用(整合Mybatis,Druid,Junit4,PageHelper,logback等)

目录 1.介绍 1.1 配置文件 1.2 目录结构 2.基于SpringBoot的SpringMVC 4.整合Mybatis 5.整合Druid连接池 6.整合Junit4 7.整合Logback 8.整合PageHelper 9.SpringBoot整合Thymeleaf ​编辑 【附录】springboot的pom.xml 1.介绍 Spring框架的优点是方便解耦、简化开…

openEuler系统安装Visual Studio Code

openEuler系统安装Visual Studio Code 背景安装密钥和存储库更新包缓存并使用dnf安装包Fedora 22及以上版本旧版本使用yum 安装过程截图安装成功看桌面效果 背景 openEuler(openEuler-24.03-LTS)安装了麒麟UKUI桌面但是没有麒麟软件商店想安装Visual Studio Code 安装密钥和…

计算机毕业设计选什么题目好? springboot 大学志愿填报系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

东晟时尚服饰文化传承与发展研发中心成立

近期,东晟时尚创新科技(北京)有限公司宣布成立东晟时尚服饰文化传承与发展研发中心,此举标志着公司在促进中国传统文化与现代时尚产业结合方面迈出了关键步伐。 作为一家在时尚科技推广和设计研发应用服务领域具有战略眼光的企业&…

微信云开发云存储 下载全部文件

一、安装 首先按照这个按照好依赖,打开cmd 安装 | 云开发 CloudBase - 一站式后端云服务 npm i -g cloudbase/cli 安装可能遇到的问题 ‘tcb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。-CSDN博客 二、登录 在cmd输入 tcb login 三、…

导出运营数据Excel报表

文章目录 概要整体架构流程技术细节小结 概要 产品原型 在数据统计页面,有一个数据导出的按钮,点击该按钮时,其实就会下载一个文件。这个文件实际上是一个Excel形式的文件,文件中主要包含最近30日运营相关的数据。表格的形式已经…

C语言(16)——初识单链表

1.链表的概念及结构 概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 结构图: 补充说明: 1、链式机构在逻辑上是连续的,在物理结构上不⼀定连续 2、…

【网络】自定义(应用层)协议——序列化和反序列化

我们接着上一篇:http://t.csdnimg.cn/Xt18d 我们之前写的代码都是在应用层的,而TCP是在应用层下面一层的传输层 1.自定义协议(应用层) 1.1.应用层和传输层的关系 应用层和传输层的概述 应用层:位于网络协议的最高层…

Apollo9.0 PNC源码学习之Planning模块—— Lattice规划(四):纵向运动轨迹规划

参考文章: (1)Apollo6.0代码Lattice算法详解——Part5: 生成横纵向轨迹 (2)自动驾驶规划理论与实践Lattice算法详解 0 前言 纵向运动规划主要是车辆的速度规划,对应于车辆油门和刹车的控制 reference_line和reference_line_info的区别及联系:ReferenceLineInfo 结构中…

全网最最最详细Keepalive的详解

1 Keepalived简介 Keepalived是一款开源的、免费的高可用软件,广泛应用于互联网IT企业中,以其轻量级、配置简单、管理方便等特点受到青睐。以下是Keepalived的详细简介: 1.1 基本概念 定义:Keepalived是一个类似于Layer 3、4 &…