这是代码
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
答案 0 :(得分:2)
这是因为Python使用对numpy数组的引用。
在此行中,您将loc1
设置为指向a.x
loc1 = a.x
然后loc2
指向同一个数组。
loc2 = a.x
这就是差异为0.0的原因。
如果你想制作一个数组的副本,那么你可以简单地用1.0来实现它。
loc1 = a.x * 1.0