2012-11-06 9 views
5

मैं कोड मैं का इस्तेमाल किया है एक पाठ फ़ाइल में कुछ लाइनें लिखने के लिए कोशिश कर रहा हूँ, और यहाँ:numpy.savetxt "श्रेणी के बाहर tuple अनुक्रमणिका"?

 IndexError: tuple index out of range 
: कोड savetxt के साथ लाइन को चलाता जब

import numpy as np 

# Generate some test data 
data = np.arange(0.0,1000.0,50.0) 

with file('test.txt', 'w') as outfile:  
    outfile.write('# something') 

    for data_slice in data: 
     np.savetxt(outfile, data_slice, fmt='%1.4e') 

     outfile.write('# New slice\n') 

, मैं इस त्रुटि मिलती है

कोई विचार क्यों ऐसा होता है? मैंने "एफएमटी" भाग को हटाने की कोशिश की, लेकिन मुझे वही चीज़ मिल गई।

+1

आप बस np.savetxt (आउटफाइल, डेटा, fmt = '% 1.4e') का उपयोग क्यों नहीं करते? – EnricoGiampieri

+0

यह काम करता है! मैं मूल रूप से लूप के माध्यम से कई बार चलाने की सोच रहा था, और हर बार एक लूप के माध्यम से, मैं दाईं ओर एक नया कॉलम जोड़ता हूं। क्या यह करना मुमकिन है। धन्यवाद! – mcglashan

+0

मैंने आपको एक पूर्ण उत्तर दिया, अगर यह पर्याप्त है तो इसे सेट करने के लिए स्वतंत्र हो गया है क्योंकि – EnricoGiampieri

उत्तर

5

समस्या यह है कि numpy.save कुछ आकार की जानकारी के साथ एक सरणी की अपेक्षा करता है, जबकि आप इसे केवल एक संख्या पास करते हैं।

आप बार में एक ही तत्व पारित करने के लिए चाहते हैं, तो (लेकिन मैं आपको पूरे सरणी को बचाने के लिए सुझाव देते हैं) आप कम से कम एक

np.savetxt(outfile, array(data_slice).reshape(1,), fmt='%1.4e') 

इस का एक आकार के साथ एक numpy सरणी के लिए यह पहली कन्वर्ट करने के लिए है है, क्योंकि एक ही संख्या के आकार एक शून्य टपल है, और यह पहली आयाम

array(1).shape == tuple() 
#True 

साथ विभाजित करने के लिए पूरे सरणी यह ​​करने के लिए पर्याप्त है को बचाने की कोशिश दायर करने के लिए लिखने के लिए:

np.savetxt(outfile, data, fmt='%1.4e') 
+0

पर आपका जवाब समझ में आता है! धन्यवाद। – mcglashan

+0

यह ऊपर सरणी के बजाय np.array होना चाहिए। – jaamit

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