如何防止numpy中的十进制数字自动移位

问题描述 投票:-1回答:1

这是我的代码:

y = np.array([-3.44 , 1.16 , -0.81])
y = np.exp(y)
print(y)

为此块,我得到了以下结果

[0.03206469 3.18993328 0.44485807]

但是,当我将3.91添加到列表中时,结果已更改

x = np.array([-3.44 , 1.16 , -0.81 , 3.91])
x = np.exp(x)
print(x)

结果:

[3.20646853e-02 3.18993328e+00 4.44858066e-01 4.98989520e+01]

如何防止此更改?

python numpy scientific-notation
1个回答
2
投票

您可以使用np.set_printoptions

np.set_printoptions

说明:

小数舍入不能总是准确地用二进制表示,因此您会看到一些浮点不一致。例如:

>>> x = np.array([-3.44 , 1.16 , -0.81 , 3.91])
>>> x = np.exp(x)
>>> print(x)
[3.20646853e-02 3.18993328e+00 4.44858066e-01 4.98989520e+01]

>>> np.set_printoptions(suppress=True, precision=8)

>>> print(x)
[ 0.03206469  3.18993328  0.44485807 49.89895197]

鉴于这些不一致之处,默认情况下,>>> 0.1 + 0.2 0.30000000000000004 代表科学计数法中的浮点数。我上面显示的方式仅将打印选项设置为您想要的方式,但是数组内部的实际表示形式并未更改。

[numpy抑制科学计数法,并且默认情况下将浮点抑制到np.set_printoptions(suppress=True)小数位,因此从技术上讲,在这种情况下不需要8参数:

precision

我添加了>>> np.set_printoptions(suppress=True) >>> x [ 0.03206469 3.18993328 0.44485807 49.89895197] ,以防您在打印时需要所需的精度。

precision

在此处了解有关浮点运算的更多信息:

  1. >>> np.set_printoptions(suppress=True, precision=2) >>> x array([ 0.03, 3.19, 0.44, 49.9 ])

  2. Is floating point math broken?

© www.soinside.com 2019 - 2024. All rights reserved.