为数组设置新值会产生与应有的结果不同的结果

时间:2017-04-17 15:55:37

标签: python arrays numpy

我有这个数组:

L = np.array([[5,4],[3,2]])

我想改变第二个支架。

如果我这样做:

print(L[1] + (-0.6)*L[0])

它会给我这个数组:

[0,-0.4]

但是,如果我改变它:

L[1] = L[1] + (-0.6)*L[0]
print(L)

打印:

# [[5 4] [0 0]]

为什么输出不同?

1 个答案:

答案 0 :(得分:1)

第一个例子:

L[1] + (-0.6)*L[0]

返回指定操作的结果,但未分配,因此您只有结果。

在你的第二个例子中

L[1] = L[1] + (-0.6)*L[0]

结果写入L[1],但结果会转换为dtype的{​​{1}}。这是一个整数。所以中间结果只是被截断了。

这种“截断”是结果不正确的原因:

L