gpt4 book ai didi

python - 恢复规范化操作时的精度问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:17 25 4
gpt4 key购买 nike

我正在执行一些规范化操作,令我惊讶的是,当我尝试恢复该操作时,我发现 assert_array_almost_equal 的默认 6 位小数精度出现 100% 的不匹配。为什么会这样?难道是因为我的最大值的精度?如果是这样,我怎样才能在 numpy.ndarray.max() 中获得更高的精度?

from __future__ import division
import numpy

_max = numpy.float128(67.1036) # output of numpy.ndarray.max() on an a float32 array

def divide_and_mult(x, y):
return numpy.divide(numpy.float128(x), y) * y

for i in range(100):
try: numpy.testing.assert_array_equal(divide_and_mult(i, _max), numpy.float128(i))
except AssertionError, e: print e

最佳答案

numpy 数组无法获得比 float128 更高的精度,在大多数系统上最好的精度甚至更低:float64

通常您不关心精度的一点损失并使用 np.testing.assert_almost_equal或可让您测试特定绝对和/或相对差异的类似函数。

如果您想以更高的精度执行此操作,则需要使用具有无限精度或至少是用户定义精度的类型:decimal.Decimalfractions.Fraction或切换到符号数学库,如 sympy .

关于python - 恢复规范化操作时的精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45859035/

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