Amy 原创整理|资料核验:2026-11-04
NumPy的expm1逐元素计算exp(x)-1。官方文档特别指出:当x很小时,它比先算exp(x)再减1具有更好的精度。数学表达式相同,并不保证浮点计算过程保留同样的信息。
原因在于exp(x)接近1时,先计算的结果可能已经被舍入;之后再减1,不能取回此前丢掉的小量。expm1针对这种计算提供了专门接口。
教学练习(Amy自拟):设置x = np.array([1e-4, 1e-8, 1e-12], dtype=np.float64),把np.exp(x)-1和np.expm1(x)并排打印,观察越靠近零时的差别。这里是可运行的练习设计,不是测量数据,也不承诺不同平台显示完全相同的末位数字。
Amy建议:在代码审查中看到“指数结果减1”,先判断输入是否常接近零,再选适合的接口。官方同时列出log1p作为对应逆运算;expm1的作用是改善这一步数值计算,不能消除输入数据本身的误差。
官方来源:
https://numpy.org/doc/stable/reference/generated/numpy.expm1.html