Python numpy数组差异或求和给出了错误的结果

时间:2017-05-16 08:40:39

标签: python python-2.7 class numpy

这是代码

import numpy as np

class Test(object):
    def __init__(self, x):
        self.x = x
    def move(self, dx):
        self.x += dx

a = Test(x = np.array([6371000.0, 0.0, 0.0])
loc1 = a.x
print loc1
a.move(np.array([-9.81, 0.0, 0.0]))
loc2 = a.x
print loc2
print loc1[0] - loc2[0]

当我运行此代码(python 2.7)时,我得到了:

[6371000. 0。0。]

[6370990.19 0. 0。]

0.0

1 个答案:

答案 0 :(得分:2)

这是因为Python使用对numpy数组的引用。

在此行中,您将loc1设置为指向a.x

loc1 = a.x

然后loc2指向同一个数组。

loc2 = a.x

这就是差异为0.0的原因。

如果你想制作一个数组的副本,那么你可以简单地用1.0来实现它。

loc1 = a.x * 1.0