私はPythonコードで-
と-=
に関連するいくつかの奇妙な動作をしています。私はnumpyのを使ってQR分解を書き込み、ダブルループ内のコードの次の行を持っています:q
とr
は両方numpy.array
あり、そしてv
がv = x[:,j]
として取られ、他のnumpy.array
のスライスです- vs - = numpyの演算子
v = v - r[i,j] * q[:,i]
を。
上記のコードは、すべての場合に期待どおりに機能しません。しかし、私が次のように変更した場合:
v -= r[i,j] * q[:,i]
すべてがうまく機能します。
私は、これらの2つの行が同一でなければならないという印象を受けました。 -=
と_ = _ -
が異なっ働いていたかどうかをテストするために、私は再び両方のprint文で[2 3] [2 3]
を生産、期待通りに動作します次のスニペット
import numpy
x = numpy.array(range(0,6))
y = numpy.array(range(0,6))
u = x[3:5]
v = y[3:5]
print u,v
u = u - [1,1]
v -= [1,1]
print u,v
を作成しました。
私は、なぜこれらの2つのラインが異なる動作をするのか全くわかりません。私が考えることができる唯一の可能なことは、時々(10^-8以下のオーダーの)非常に小さい数字を取り扱っているということで、-=
がより良いという精密な問題がありますか? x
の要素が小さくなるにつれて、最初の行がますます悪化します。
このような問題について他の投稿がある場合はお詫び申し上げます。-
と-=
を検索することはできません。これらの割り当て/演算子以外の正しい用語があるかどうかわかりません。
ありがとうございました!
あなたは 'のために、このようなものの名前を検索したい場合は-'と' - = 'ある[' __sub__'] [1]と[ '__isub__'] [2]それぞれ、したがって: 'a = a .__ sub __(b) 'と同等です。 ' a - = b'は 'a .__ isub __(b)'と同等です。 (__isub__が定義されていない場合は、上記に戻ります) [1]:http://pyref.infogami.com/__add__ [2]:http://pyref.infogami.com/__iadd__ –