2013-08-10 9 views
5
>>> print np.array([np.arange(10)]).transpose() 

[[0] 
[1] 
[2] 
[3] 
[4] 
[5] 
[6] 
[7] 
[8] 
[9]] 

क्या इन अतिरिक्त चरणों के माध्यम से बिना लंबवत arange प्राप्त करने का कोई तरीका है?आप एक numpy लंबवत arange कैसे बनाते हैं?

+0

आप पहले से ही कुछ अनावश्यक कदम उठा रहे हैं - 'np.array()' और '[]' अनावश्यक हैं क्योंकि 'np.arange' एक numpy सरणी देता है। आप बस 'np.arange (10) कर सकते हैं। ट्रांसफर() ' – Brionius

+3

@ ब्रियोनियस, 1 डी सरणी का' ट्रांसपोज़ 'कुछ भी नहीं करता है। ओपी सरणी में एक अतिरिक्त आयाम जोड़ने के लिए '[]' का उपयोग कर रहा है और यह पूछ रहा है कि एक ही परिणाम प्राप्त करने के लिए एक और अधिक प्रभावी तरीका है या नहीं। –

+0

@ बिरिको आह, तुम सही हो, मेरी गलती। – Brionius

उत्तर

14

आप np.newaxis उपयोग कर सकते हैं:

>>> np.arange(10)[:, np.newaxis] 
array([[0], 
     [1], 
     [2], 
     [3], 
     [4], 
     [5], 
     [6], 
     [7], 
     [8], 
     [9]]) 

np.newaxis सिर्फ None के लिए एक उपनाम है, और मुख्य रूप से पठनीयता के लिए numpy डेवलपर्स द्वारा जोड़ा गया है। इसलिए np.arange(10)[:, None] उपर्युक्त समाधान के समान सटीक परिणाम उत्पन्न करेगा।

+0

बस जोड़ने के लिए, 'np.newaxis' के बजाय 'कोई नहीं' गुजरना एक ही प्रभाव है ... –

+0

क्या आप कुछ दस्तावेज़ों को इंगित कर सकते हैं कि यह क्यों काम करता है? –

+0

@ सोलो कैस्ट्रो, धन्यवाद, मुझे यह नहीं पता था। – Akavall

10

मुझे क्या करना होगा:

np.arange(10).reshape((10, 1)) 

np.array के विपरीत, नयी आकृति प्रदान एक हल्के वजन आपरेशन जो सरणी में डेटा की प्रतिलिपि नहीं करता है।

+8

स्वीकार करूंगा एक साइड नोट पर, आप पहले आयाम के आकार को निर्दिष्ट करने से बचने के लिए 'whatever.reshape (-1, 1) 'भी कर सकते हैं। –

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