2011-04-04 25 views
46

क्या एक अपरिवर्तनीय NumPy सरणी बनाने का कोई आसान तरीका है?अपरिवर्तनीय numpy सरणी?

यदि किसी को ऐसा करने के लिए ndarray से कक्षा प्राप्त करनी है, तो अपर्याप्तता प्राप्त करने के लिए किसी को ओवरराइड करने के तरीकों का न्यूनतम सेट क्या है?

+0

क्यों आपको अपरिवर्तनीयता की आवश्यकता है? – kennytm

+19

@KennyTM कोडिंग त्रुटियों से बचने के लिए गलती से कुछ ऐसा संशोधित करने के कारण जो अविश्वासी माना जाता है। – NPE

उत्तर

70

आप एक numpy सरणी unwriteable बना सकते हैं:

a = np.arange(10) 
a.flags.writeable = False 
a[0] = 1 
# Gives: RuntimeError: array is not writeable 

इसके अलावा इस सूत्र में चर्चा को देखें:

http://mail.scipy.org/pipermail/numpy-discussion/2008-December/039274.html

और प्रलेखन:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flags.html

+13

वैकल्पिक रूप से, 'a.setflags (लिखें = गलत) '। – lafras

+0

@lafrasu आप क्या कहेंगे पसंदीदा फॉर्म, 'setflags() 'या' flags.writeable = '? – NPE

+2

@aix: प्रलेखन पर एक त्वरित रूप से ऐसा लगता है कि दोनों दृष्टिकोण समान हैं। निजी तौर पर, मैं गुण सेट करने के लिए एक विधि का उपयोग करना पसंद करते हैं। – lafras