比较浮点数的十进制表示。
comparedecimal的Python项目详细描述
比较胸
比较浮点数的十进制表示形式的包, 包括一个命令行工具来报告 CSV文件。在
安装
comparedecimal
包可以通过在其目录中运行pip3 install .
或{comparecsv
将作为包的一部分安装。在
基本原理
我写这个工具是为了帮助我组织和整理科学
数据集。偶尔我会碰到两个文件
嫌疑犯有相同的数据,但因为他们经历了不同的
在处理步骤中,这些值不再是完全相同的
例如,CSV文件可能已在Excel中打开并再次保存,
截断浮点值中的小数位数。在
在这些情况下,能够确定文件的兼容性是很有用的
是否有可能其中一个是另一个精度较低的版本
(例如“2.0”和“1.99”)?或者数值实际上是
相同但表示它们的字符串不同(例如“1234”和
‘1.234e3’?comparedecimal
提供Python包和命令行
回答这些问题的工具。在
平等水平
对于任何一对字符串,comparedecimal
决定五个等式中的一个
他们之间的水平。总是给出尽可能高的平等水平,
例如,一对字符串既“compatible”又“close”
将被归类为“兼容”。平等级别如下:
- 在
相同:字符串相等。在
在 - 在
数值相等:字符串,当解析为浮点时 小数,产生相等的数。在
在 - 在
兼容:存在一个浮点数,当 格式化后,可以同时生成两个字符串表示形式。在这个下面 例如,“1.9”和“1.95”的定义是兼容的,因为 它们都是1.949的有效表示。这个平等级别是 对于查找具有不同级别的重复文件特别有用 精确的。在
在 - 在
闭合:字符表示的数字之间的差异 字符串低于某个阈值(形式上:表示 值用
在a
和b
表示,阈值用t
表示,它们是 如果符号和max(abs(a), abs(b)) <= (1 + t) * min(abs(a), abs(b)))
相同,则关闭。此相等级别对于查找 从截断或 舍入误差导致数值略有偏离。在 - 在
不等:字符串不相等,不能表示 同样的数字,它们所代表的值在意义上并不接近 以上定义。在
在
comparedecimal
包
comparedecimal
包提供了类DecimalComparer
,它
用分隔符字符串初始化(用于划分多字段的行
比较)和阈值(用于定义Close
相等级别
如上所述)。该类提供以下方法:
compare_strings
比较单个字符串compare_string_lists
比较字符串列表compare_line_lists
使用预定义的 分隔符将每行拆分为字符串
DecimalComparer
有一个实例变量totals
。totals
是一个
每个相等级别都有一个键的字典(由
EqualityLevel
枚举)。每个相等级别的关联值为
表示到目前为止进行的比较总数的整数
这导致了这个平等的水平。在
comparecsv
命令行工具
comparecsv
是一个命令行实用程序,用于在
包含数字数据的分隔文本文件(例如CSV文件),甚至
当数据的字符串表示形式不同时。在
comparecsv
以两个分隔文件作为参数
布局(即行数和列数相同)并按字段比较
外商投资企业莱德。对于每对对应字段,它确定
上面定义的相等。在
在两个文件上运行时,comparecsv
打印字段对的总数
在每一个平等的层面上。对于每一个场对,最高可能
提供相等级别:例如,如果两个字段不相同,但是
在数字上相等,那么它们(根据定义)也将是兼容的
并关闭;在本例中,comparecsv
将报告相等级别
“数值相等”。在
许可证
版权所有2018,2019 Pontus Lurcock pont@talvi.net
在gnugplv3下发布;有关详细信息,请参阅文件复制。在
- 项目
标签: