Numpy: मैं newaxis या कोई भी उपयोग करना चाहिए?


91

सुन्न में, लंबाई के एक अक्ष बनाने के लिए स्लाइसिंग सिंटैक्स में 'newaxis' ऑब्जेक्ट का उपयोग कर सकते हैं, जैसे:

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

प्रलेखन राज्यों है कि एक भी उपयोग कर सकते हैंNone के बजाय newaxis, प्रभाव बिल्कुल वैसा ही है।

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

जवाबों:


103

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

In [1]: import numpy

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

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

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


धन्यवाद, मैंने नहीं देखा था कि np.newaxis वास्तव में कोई नहीं है। मैं तब newaxis के साथ जाऊँगा।
निको

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

5
इसके अलावा अगर आप उन लोगों के साथ काम करते हैं जो सुन्न अनुक्रमण के विवरण से अपरिचित हैं, तो वे पागल हो जाते हैं जब वे "कोई नहीं" द्वारा गिरफ्तार किए गए ऐरे को देखते हैं
पीटर

1
एक जगह जब Noneबेहतर निष्पादन की गति का अनुकूलन होता है, तो यह बहुत कम समय का लाभ दे सकता है। लेकिन आमतौर पर आपको पसंद करना चाहिए np.newaxis
गोडैयो

2
उन्होंने सिर्फ newaxis = object()(या सी-लेवल समतुल्य) का उपयोग क्यों नहीं किया ... Noneयह मेरे लिए काफी गलत है। मेरे पास एक बग (एक नंगे returnकि एक बूलियन सरणी वापस करने वाला था) के साथ एक समारोह था और मुझे आकार बेमेल के कारण त्रुटियां होने लगीं। मुझे यह महसूस करने में थोड़ा समय लगा कि साथ में अनुक्रमण करने से Noneकोई वृद्धि नहीं होती है IndexError। अगर वे एक "ताजा" प्रहरी मूल्य का उपयोग किया था, तो मैं त्रुटि की भावना बनाने की कोशिश कर के 30 मिनट बचना होगा ...
Giacomo Alzetta
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.