gpt4 book ai didi

python - 如何理解 numpy.nextafter 的结果

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:00 27 4
gpt4 key购买 nike

考虑以下对 numpy.nextafter

的调用
>>> from numpy import nextafter
>>> nextafter( 0.1, -1)
0.099999999999999992
>>> nextafter( 0.1, +1)
0.10000000000000002
>>> nextafter( 1 , -1)
0.99999999999999989
>>> nextafter( 1 , +1)
1.0
>>> nextafter(10 , -1)
9.9999999999999982
>>> nextafter(10 , +1)
9.9999999999999982

我希望在第二个参数为正的所有情况下,返回一个大于第一个参数的值;并且当第二个参数小于零时,结果小于第一个参数。

所展示的行为不符合我的期望,具体而言:

  1. nextafter(1, +1) 根本不改变第一个输入,而是增加它。
  2. nextafter(10, +1) 减少第一个输入,而不是增加它。

这是错误还是功能?

这些示例是在 Python 3.6.1 上使用 Numpy 1.13.1 生成的

最佳答案

你误解了第二个参数的意思。根据docs ,函数确实(强调我的)

Return the next floating-point value after x1 towards x2, element-wise.

因此,nextafter(1, +1) 不会改变任何东西,因为您正试图从 1.0 走向 1.0。 nextafter(10, +1) 减少输入,因为这是从 10.0 到 1.0 的方式。

如果你总是想增加/减少,你可以走向 +/- 无穷大:

import numpy as np
nextafter( 0.1, -np.inf) # 0.099999999999999992
nextafter( 0.1, +np.inf) # 0.10000000000000002
nextafter( 1 , -np.inf) # 0.99999999999999989
nextafter( 1 , +np.inf) # 1.0000000000000002
nextafter(10 , -np.inf) # 9.9999999999999982
nextafter(10 , +np.inf) # 10.000000000000002

关于python - 如何理解 numpy.nextafter 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46645158/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com