के साथ ऑपरेटरों मुझे -
और -=
से संबंधित मेरे पायथन कोड में कुछ अजीब व्यवहार है। मैं एक डबल पाश में numpy का उपयोग कर एक QR अपघटन लिख रहा हूँ, और है निम्न कोड पंक्ति:- बनाम - = numpy
v = v - r[i,j] * q[:,i]
जहां q
और r
दोनों numpy.array
हैं, और v
एक और numpy.array
का एक टुकड़ा v = x[:,j]
के रूप में लिया है।
उपरोक्त कोड सभी मामलों में अपेक्षित काम नहीं करता है। हालांकि, अगर मैं निम्नलिखित परिवर्तन करता हूं:
v -= r[i,j] * q[:,i]
तब सब कुछ बेकार ढंग से काम करता है।
मैं इस धारणा के तहत था कि उन दो पंक्तियों को समान होना चाहिए। चाहे -=
और _ = _ -
अलग ढंग से काम कर रहे थे परीक्षण करने के लिए, मैं निम्नलिखित स्निपेट
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 3] [2 3]
उत्पादन बनाया।
तो मैं पूरी तरह से उलझन में हूं कि उन दो पंक्तियां अलग-अलग क्यों करती हैं। एकमात्र संभव बात यह है कि मैं सोच सकता हूं कि मैं कभी-कभी बहुत कम संख्याओं से निपट रहा हूं (10^-8 या छोटे के क्रम में) और कुछ सटीक समस्याएं हैं कि -=
बेहतर है? पहली पंक्ति x
के तत्वों को कम करने के रूप में तेजी से खराब होती है।
अगर मैं इस तरह के मुद्दे के बारे में कोई अन्य पोस्ट करता हूं तो मैं क्षमा चाहता हूं, मैं -
और -=
की खोज नहीं कर सकता और मुझे नहीं पता कि असाइनमेंट/ऑपरेटरों के अलावा इनके लिए कोई सही शर्तें हैं या नहीं।
किसी भी मदद के लिए धन्यवाद!
भविष्य में संदर्भ के लिए अगर आप 'के लिए इस तरह सामान के लिए खोज करने के लिए नामों चाहते -' और' - = 'रहे हैं [' __sub__'] [1] और [ '__isub__'] [2] क्रमशः। तो: 'ए = ए - बी'' ए = ए .__ उप __ (बी) ' ' ए - = बी' 'ए .__ isub __ (बी)' के बराबर है। (जब तक __isub__ अपरिभाषित नहीं होता है, तो यह उपर्युक्त पर वापस आता है) [1]: http://pyref.infogami.com/__add__ [2]: http://pyref.infogami.com/__iadd__ –