【发布时间】:2021-08-18 23:58:55
【问题描述】:
这是我在 Python 中用作数值方法的一部分的代码,但是当计算 B[n] 并且它是小数时会出现问题。例如,如果B[n] - f * B[n-1] 的答案是-2.6,则B[n] 将改为-2。当我在print 命令上执行这个确切的命令(B[n] - f * B[n-1]) 时,它会输出-2.6。
这太荒谬了,为什么会这样? B 的 numpy 数组是否不接受小数作为其元素?如果是这样,我认为这绝对是荒谬的。顺便说一句,print 命令可以让我查看for 循环期间实际发生的情况,我概述了上面的发现。
for n in range(1, nt):
f = A[n, n-1] / A[n-1, n-1]
A[n, n] = A[n, n] - f * A[n-1, n]
A[n, n-1] = 0
print(B[n], B[n-1], f,B[n] - f * B[n-1])
B[n] = B[n] - f * B[n-1]
print(A, B, f, B[n-1], B[n])
【问题讨论】:
-
听起来您无意中将数组定义为整数,而不是浮点数;您可以将您如何定义它们添加到您的问题中吗?
-
解决这个问题的最基本方法是在原始定义中添加
dtype=float之类的内容(取决于您想要的类型)。通常有一些快捷方式可以让你省略它,但有时你需要编写它。如果普通的float没有足够的精度或不适合,它还允许您指定类型。 -
@sabik:整数数组不允许像
2.6这样的值。 -
你是如何创建
B的? -
迟早,您需要了解 numpy 数组有一个名为
dtype的属性。忽略这一点,后果自负!
标签: python python-3.x numpy