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

时间:2019-03-30 19:25:22

标签: python arrays numpy

我使用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

编辑:我确实理解了为什么浮点数会以这种方式起作用,但是我不明白为什么它们在数组中以一种方式显示,而在直接调用时以另一种方式显示。

2 个答案:

答案 0 :(得分:0)

Numpy试图提供帮助并打印可读的东西。有关其工作的详细说明,请参见this

在python中打印调用str和str不能打印出精确的内容,而只是提供信息。 repr()用于精确表示。

答案 1 :(得分:0)

从根本上说,这是由于numpy用于处理数字的二进制文件很难精确地用十进制表示,反之亦然。看看我们如何习惯用十进制的三分之一表示0.33333333。在python中,0.1代表0.100000000000000005551115123125 .. 这是有关此问题的python文档的链接:Decimal fixed point and floating point arithmetic