gpt4 book ai didi

python - NumPy linspace 舍入错误

转载 作者:太空狗 更新时间:2023-10-30 01:02:38 35 4
gpt4 key购买 nike

有人可以用 numpy.linspace 解释这个舍入问题吗?

import numpy as np

np.linspace(0, 1, 6) == np.around( np.linspace(0, 1, 6), 10 )
# array([ True, True, True, False, True, True], dtype=bool)

这是我到达这里的方式......

import numpy as np

## Two ways of defining the same thing
A = np.array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])
B = np.linspace(0, 1, 6)

## A and B appear to be the same
A # array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])
B # array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])


## They're not
A == B # array([ True, True, True, False, True, True], dtype=bool)
A - B # array([ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.11022302e-16, 0.00000000e+00, 0.00000000e+00])


## Gotta round to get my expected result
C = np.round( np.linspace( 0, 1, 6 ), 10 )
C # array([ 0., 0.2, 0.4, 0.6, 0.8, 1. ])
A == C # array([ True, True, True, True, True, True], dtype=bool)

我定义 B 的方式似乎很无辜。 . .这个四舍五入的问题是不是可以让我们无处不在?

最佳答案

它并不漂亮,但它就是 float ,您将不得不学会接受它。这就是您奇怪的结果的来源:

>>> a = np.float(1)
>>> a /= 5
>>> a
0.2
>>> a*3
0.6000000000000001

你有np.allclose帮助您处理此类问题,但如果您对浮点比较没有自律,那么是的,它会一遍又一遍地咬住您。

关于python - NumPy linspace 舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716981/

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