2017-05-16 12 views
0

ここでは、私はこのコード(のpython 2.7)を実行すると、私は取得していますコードPythonの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] 

です:

を[6371000. 0 0]

[6370990.19 0 0]

0.0

+0

あなたは何を期待していますか?あなたはそれ自身から同じ数を引いています! –

+0

'loc1'と' loc2'の両方が同じ配列( 'a.x')を参照していると思います。 – pingul

答えて

2

Pythonがnumpyのために参照を使用するからですrrays。この行で

あなたは同じ配列を指すようにa.x

loc1 = a.x 

、その後loc2を指すようにloc1を設定します。

loc2 = a.x 

その理由は0.0です。

アレイのコピーを作成する場合は、単純に1.0でコピーしてください。

loc1 = a.x * 1.0 
+1

' a.x.copy() 'はもっと読みやすいかもしれません。 –

+0

ありがとう、ピーターセン。とった。 – naras

関連する問題