2009-06-03 13 views
73

numpy एक टुकड़ा करने की क्रिया वाक्य रचना में 'newaxis' ऑब्जेक्ट का उपयोग लंबाई एक की एक धुरी बनाने के लिए कर सकते हैं, जैसे में:बेवकूफ: क्या मुझे न्यूएक्सिस या कोई नहीं उपयोग करना चाहिए?

import numpy as np 
print np.zeros((3,5))[:,np.newaxis,:].shape 
# shape will be (3,1,5) 

documentation states है कि एक भी newaxis के बजाय None उपयोग कर सकते हैं, प्रभाव ठीक है वही।

क्या एक दूसरे को चुनने का कोई कारण है? क्या कोई सामान्य वरीयता या स्टाइल गाइड है? मेरी धारणा यह है कि newaxis अधिक लोकप्रिय है, शायद इसलिए कि यह अधिक स्पष्ट है। तो क्या कोई कारण है कि None की अनुमति है?

उत्तर

84

None की अनुमति है क्योंकि numpy.newaxisNone के लिए केवल एक उपनाम है।

In [1]: import numpy 

In [2]: numpy.newaxis is None 
Out[2]: True 

लेखकों शायद इसे चुना है क्योंकि वे एक सुविधाजनक निरंतर की जरूरत है, और None उपलब्ध था।

तुम क्यों newaxisNone से अधिक पसंद करते हैं चाहिए के लिए के रूप में: मुख्य रूप से यह है क्योंकि यह अधिक स्पष्ट है, और आंशिक रूप से क्योंकि किसी दिन numpy लेखकों None के अलावा कुछ के लिए इसे बदल सकता है। (वे योजना बनाने की योजना नहीं बना रहे हैं, और शायद नहीं करेंगे, लेकिन None को प्राथमिकता देने का कोई अच्छा कारण नहीं है।)

+0

धन्यवाद, मैंने नहीं देखा था कि np.newaxis वास्तव में कोई नहीं है। मैं फिर न्यूएक्सिस के साथ जाऊंगा। – nikow

+4

वे वास्तव में कहते हैं कि आप किसी का भी उपयोग नहीं कर सकते हैं, हालांकि, वे इसे अब नहीं बदल सकते हैं: "न्यूएक्सिस ऑब्जेक्ट का उपयोग ऊपर चर्चा की गई मूल स्लाइसिंग सिंटैक्स में किया जा सकता है। न्यूएक्सिस के बजाए कोई भी इस्तेमाल नहीं किया जा सकता है।" – endolith

+2

कोई भी छोटा नहीं है :) – David

संबंधित मुद्दे