K-S测试的P值和D值需要显示在pylot直方图上。值得庆幸的是,我的p值很低,但是当我使用0.0
时它们显示为round
。我还尝试numpy.set_printoptions(precision=3)
将有效数字限制为数千位,但这只会将我的输出打印更改为解释器,而不是图形。
ks_D, ks_p = ks_2samp(cntrl, test)
ks_summ = "K-S D-value = {}\nK-S p-value = {}".format(round(ks_D, 3), round(ks_p, 3))
pyplot.annotate(ks_summ, xy=(0.70, 0.75), xycoords='axes fraction')
那么如何在图表注释中将1.2228387401e-24
(<class 'numpy.float64'>
)显示为1.223e-24
?
答案 0 :(得分:1)
您需要修改
行ks_summ = "K-S D-value = {}\nK-S p-value = {}".format(round(ks_D, 3), round(ks_p, 3))
阅读
ks_summ = "K-S D-value = {}\nK-S p-value = {:.3e}".format(round(ks_D, 3), ks_p)
{:.3e}
格式表示带指数表示法的3位小数。由于此格式表示法中包含的舍入到3个小数位,我们可以将代码放到ks_p
轮。例如:
>>> ks_p = 1.2228387401e-24
>>> '{:.3e}'.format(ks_p)
'1.223e-24'
最后,请注意您也可以将字符串格式应用于ks_D
。某事{:.3f}
可以解决问题(即三位小数舍入)。
>>> ks_D = 0.38210101
>>> '{:.3f}'.format(ks_D)
'0.382'