比较浮点数的十进制表示。

comparedecimal的Python项目详细描述


比较胸

比较浮点数的十进制表示形式的包, 包括一个命令行工具来报告 CSV文件。在

安装

comparedecimal包可以通过在其目录中运行pip3 install .或{}从源代码安装。命令行 实用程序comparecsv将作为包的一部分安装。在

基本原理

我写这个工具是为了帮助我组织和整理科学 数据集。偶尔我会碰到两个文件 嫌疑犯有相同的数据,但因为他们经历了不同的 在处理步骤中,这些值不再是完全相同的 例如,CSV文件可能已在Excel中打开并再次保存, 截断浮点值中的小数位数。在 在这些情况下,能够确定文件的兼容性是很有用的 是否有可能其中一个是另一个精度较低的版本 (例如“2.0”和“1.99”)?或者数值实际上是 相同但表示它们的字符串不同(例如“1234”和 ‘1.234e3’?comparedecimal提供Python包和命令行 回答这些问题的工具。在

平等水平

对于任何一对字符串,comparedecimal决定五个等式中的一个 他们之间的水平。总是给出尽可能高的平等水平, 例如,一对字符串既“compatible”又“close” 将被归类为“兼容”。平等级别如下:

  1. 相同:字符串相等。在

  2. 数值相等:字符串,当解析为浮点时 小数,产生相等的数。在

  3. 兼容:存在一个浮点数,当 格式化后,可以同时生成两个字符串表示形式。在这个下面 例如,“1.9”和“1.95”的定义是兼容的,因为 它们都是1.949的有效表示。这个平等级别是 对于查找具有不同级别的重复文件特别有用 精确的。在

  4. 闭合:字符表示的数字之间的差异 字符串低于某个阈值(形式上:表示 值用ab表示,阈值用t表示,它们是 如果符号和max(abs(a), abs(b)) <= (1 + t) * min(abs(a), abs(b)))相同,则关闭。此相等级别对于查找 从截断或 舍入误差导致数值略有偏离。在

  5. 不等:字符串不相等,不能表示 同样的数字,它们所代表的值在意义上并不接近 以上定义。在

comparedecimal

comparedecimal包提供了类DecimalComparer,它 用分隔符字符串初始化(用于划分多字段的行 比较)和阈值(用于定义Close相等级别 如上所述)。该类提供以下方法:

  • compare_strings比较单个字符串
  • compare_string_lists比较字符串列表
  • compare_line_lists使用预定义的 分隔符将每行拆分为字符串

DecimalComparer有一个实例变量totalstotals是一个 每个相等级别都有一个键的字典(由 EqualityLevel枚举)。每个相等级别的关联值为 表示到目前为止进行的比较总数的整数 这导致了这个平等的水平。在

comparecsv命令行工具

comparecsv是一个命令行实用程序,用于在 包含数字数据的分隔文本文件(例如CSV文件),甚至 当数据的字符串表示形式不同时。在

comparecsv以两个分隔文件作为参数 布局(即行数和列数相同)并按字段比较 外商投资企业莱德。对于每对对应字段,它确定 上面定义的相等。在

在两个文件上运行时,comparecsv打印字段对的总数 在每一个平等的层面上。对于每一个场对,最高可能 提供相等级别:例如,如果两个字段不相同,但是 在数字上相等,那么它们(根据定义)也将是兼容的 并关闭;在本例中,comparecsv将报告相等级别 “数值相等”。在

许可证

版权所有2018,2019 Pontus Lurcock pont@talvi.net

在gnugplv3下发布;有关详细信息,请参阅文件复制。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用SeleniumWebDriver(又称Selenium2.0)JAVA向下滚动鼠标   java获取与消费者组kafka关联的主题列表   java在现实生活中,您什么时候会使用堆栈而不是常规链表,或者使用常规队列而不是优先级队列?   java实际参数列表和形式参数列表的长度不同(但两种长度都是2?)   默认情况下,Lucene(java框架)是否根据术语计算文档的tfidf和余弦相似性?   java编辑XML样式表更改Android中的按钮   java在Eclipse4中从处理程序更新视图   java是节点列表、数组、列表还是其他什么?   java Hibernate查询问题   java Spark在并行化列表时引发ArrayIndexOutOfBoundsException   Java中有3D几何算法库吗?   java如何获取超过25条post消息   java如何在不同的活动中获取Int的值?getIntent()不再工作了   java在VerticalViewPage(Android)的每个页面中动态插入JSON数据