2013-08-13 16 views
10

मैं पांडा का उपयोग कर रहा हूँ .रीज़ और एनपी.न्डार्रे।कैसे ndarray to array को परिवर्तित करने के लिए?

कोड इस

>>> t 
array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 
>>> pandas.Series(t) 
Exception: Data must be 1-dimensional 
>>> 

की तरह है और मैं यह 1-आयामी सरणी में परिवर्तित करने के लिए trie:

>>> tt = t.reshape((1,-1)) 
>>> tt 
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) 

टीटी अभी भी बहु-आयामी है के बाद से वहाँ डबल कर रहे हैं '['।

तो मैं वास्तव में सरणी में ndarray को कैसे परिवर्तित करूं?

खोज के बाद, it says they are the same। हालांकि मेरी स्थिति में, वे वही काम नहीं कर रहे हैं।

उत्तर

15

एक वैकल्पिक np.ravel उपयोग करने के लिए है:

>>> np.zeros((3,3)).ravel() 
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 

flatten से अधिक ravel के महत्व ravel केवल प्रतियां डेटा यदि आवश्यक है और आमतौर पर एक दृश्य देता है, जबकि flatten हमेशा डेटा की एक प्रतिलिपि वापस आ जाएगी।

सरणी समतल आकृति बदलें का उपयोग करें:

tt = t.reshape(-1) 
4

उपयोग .flatten:

>>> np.zeros((3,3)) 
array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 
>>> _.flatten() 
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 

संपादित करें: के रूप में कहे अनुसार, इस इनपुट की एक प्रतिलिपि हर मामले में देता है। प्रतिलिपि से बचने के लिए, @Ophion द्वारा सुझाए गए अनुसार .ravel का उपयोग करें।

+2

'.flatten' एक प्रतिलिपि देता है, न कि दृश्य, इसलिए यह आमतौर पर आपका पहला विकल्प नहीं होना चाहिए। – Jaime

+0

@ जैम: धन्यवाद, मैंने इसे नोट किया है। (और '.ravel' को इंगित करने के लिए ओफियन को +1 ... स्पष्ट रूप से मैं पर्याप्त NumPy का उपयोग नहीं करता।) – nneonneo

1
tt = array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) 

oneDvector = tt.A1 

यह केवल दृष्टिकोण है जो डबल कोष्ठक की समस्या को हल है, कि 1 डी सरणी कि मैट्रिक्स एन डी के लिए रूपांतरण है।

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