Amy 原创整理|资料核验:2026-11-04
NumPy的log1p(x)逐元素计算自然对数ln(1+x)。官方说明,即使x小到浮点运算中的1+x会舍入为1,这个函数仍能准确处理这类小输入。
Amy原创教学示例:令x=np.float64(1e-20)。在常见float64运算中,先计算1+x会得到1,因此np.log(1+x)得到0;np.log1p(x)则保留约1e-20的结果。这里不是两套数学定义冲突,而是中间加法已经丢掉了小增量。
使用前也要看定义域:实数输入x小于-1时,ln(1+x)没有实数值,不能期待log1p自动把数据变成合理数;x=-1对应负无穷。log1p的“1p”是对输入加1,不是对数算完再加1,也不是以10为底。
Amy建议:当公式本来就是ln(1+x),且x可能非常接近0时,优先检查是否适合用这个专门函数。测试时保留dtype、输入量级及边界值,不把这个技巧解释成能够修复所有浮点误差。
官方来源:
https://numpy.org/doc/stable/reference/generated/numpy.log1p.html