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

2024-10-05 22:04:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

编辑:我明白为什么浮点数是这样的,但我不明白为什么它们在数组中以一种方式显示,然后在直接调用时以另一种方式显示


Tags: 函数numpynp方式数组dotprint我会
2条回答

从根本上说,这是因为二进制(numpy用来处理数字的东西)很难精确地用十进制表示,反之亦然。看看我们是怎么习惯用十进制表示三分之一的,0.33333。。在python中,0.1是0.10000000000000055515123125。。 下面是python文档关于这个问题的链接:Decimal fixed point and floating point arithmetic

Numpy试图提供帮助,把东西打印出来可读。请参阅this以获得关于它所做工作的详细解释

在python中打印str调用,str不需要打印精确的内容,只需要提供信息。repr()用于精确表示

相关问题 更多 >