我正在使用numpy分析图。我正在做的一种分析是遍历,同时列举:“到现在为止,节点K在与节点J的路径中的频率是多少”。在此分析中,我的许多值都是比率或百分比,或者您想考虑一下。
由于图经常分支,因此在组合或排列时它们通常是指数的。因此,有时候,我的比率变得很小。而且,numpy失去了准确性。最终,numpy表示该比率为零,即使该比率仍应大于零。
为了进一步说明,我使用矩阵的行来表示搜索的深度,并使用列来表示节点。 [行,列]的值是在所述深度处的所述节点与我要与其进行比较的任何其他节点的比率。因此,根据图表的不同,该比率可能会在下一个级别降低一半。从1.到.5到.25到..... 1.369 ^(-554),下一次迭代突然为零。更不用说,当它变得足够小时,我在所有其他计算中也会失去准确性。
如果即使在大型图形上也要具有极高的精度,我有什么选择?我想我可以沿相反的方向枚举,获取总数并在必要时进行除法以重新计算比率(在我的程序中这是必要的)。但是,如果我这样做,我仍然希望当我将一个巨大的数字除以另一个巨大的数字时,会损失大量的准确性,是吗?
最佳答案
您所有的比率都是有理数,因此可以在Fraction
模块中使用fractions
类。每个“分数”是两个整数的比率。而且由于Python的整数没有上限,所以分数也没有上限。您可以将它们视为浮点值-加,减,乘,除和打印它们。
我在我的上一个项目中做了非常类似于您的操作的操作,以跟踪Windows Registry的树形结构中的比率。我在Delphi中完成了这个项目,但是已经开始在Python中重做它。我已经决定使用fractions
。
问题在于这些值及其上的操作将被准确保留。但是,如果将它们绘制在图形上,则这些值可能仍会被其他值淹没。
关于python - 保持numpy的比率精度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51487174/