在对非常小的值(几百位小数)取对数时避免除零错误



我正在使用非常小的p值(几百个小数),我试图检测列表中最小的一个。似乎Python检测到它们中的许多为零,所以我在记录时得到一个零除法错误。

为了避免这种情况,我写了下面的代码:

smallest_val = min(np.array(p_value)[np.array(p_value) > 0])
for i in range(len(p_value)):
  if p_value[i] == 0: 
    p_value[i] = smallest_val
p_value_log = []
for i in p_value:
  b = log(i)
  p_value_log.append(b)

当然,这并不能解决我的问题,因为几个小的p值等于smallst_val,我不能识别最小的。有什么最好的办法吗?

与其将0替换为smallest_val,不如将它们替换为smallest_val/2smallest_val和0之间的其他内容,以便您仍然可以识别您的替换

最新更新