NumPy数组元素在选中时会发生奇怪的变化

问题描述 投票:0回答:2

我使用NumPy数组制作了一个简单的线性方程系统求解器。我手边有两个数组:一个2x2(A)和一个2x1(B)。

通过使用Ainv = np.linalg.inv(A)反转第一个,然后使用Ainv.dot(B)将其与第二个相乘,我得到第三个2x1数组,其中包含我想要的x和y值,该函数返回该函数,顺便称为solveLin()

现在,如果我打印出变量到位的print(solveLin()),我会得到具有正确值的数组[[-8.] [ 5.]]

但是,如果我用print(solveLin()[0][0])来定位值,我会得到-7.9999999999999984.999999999999999作为我的答案。

如果我将它们设置为显示为整数,则它们变为-7和4

编辑:我确实理解为什么浮动数字以这种方式运行,但我不明白为什么它们在数组中以单向显示,然后在直接调用时以另一种方式显示。

python arrays numpy
2个回答
0
投票

Numpy试图提供帮助并打印可读的内容。请参阅this,了解其正在做的事情。

在python中打印调用str和str不会打印精确的东西,只是提供信息。 repr()用于精确表示。


0
投票

从根本上说,二元是numpy用来处理数字的事实很难用十进制精确表示,反之亦然。看看我们如何习惯用十进制表示三分之一,0.33333333 ..在python中,0.1是0.100000000000000005551115123125 ..这是来自python docs的链接:Decimal fixed point and floating point arithmetic

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