Python numpy数组差分或求和给出错误结果
这是密码Python numpy数组差分或求和给出错误结果,python,python-2.7,class,numpy,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
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这是因为Python使用对numpy数组的引用 在这一行中,您将
loc1
设置为指向a.x
loc1 = a.x
然后loc2
指向同一数组
loc2 = a.x
这就是差异为0.0的原因
如果您想制作数组的副本,那么您可以简单地将其与1.0混合使用
loc1 = a.x * 1.0
这是因为Python使用对numpy数组的引用 在这一行中,您将
loc1
设置为指向a.x
loc1 = a.x
然后loc2
指向同一数组
loc2 = a.x
这就是差异为0.0的原因
如果您想制作数组的副本,那么您可以简单地将其与1.0混合使用
loc1 = a.x * 1.0
你期待什么?你正在从它自身减去相同的数字!我认为
loc1
和loc2
都引用了相同的数组(即a.x
),您期望什么?你正在从它自身减去相同的数字!我认为loc1
和loc2
都引用了相同的数组(即a.x
),谢谢Petersen。明白了,谢谢你,彼得森。知道了。