2013-11-25 8 views
10

मेरे पास कुछ मेटाडाटा के साथ एक फ़ाइल है, और उसके बाद कुछ वास्तविक डेटा जिनमें शीर्षक के साथ 2 कॉलम शामिल हैं। क्या मुझे numpy में genfromtxt का उपयोग करने से पहले दो प्रकार के डेटा को अलग करने की आवश्यकता है? या क्या मैं किसी भी तरह से डेटा को विभाजित कर सकता हूं? फ़ाइल पॉइंटर को हेडर के ऊपर लाइन के अंत में रखने के बारे में और फिर वहां से genfromtxt की कोशिश करने के बारे में क्या? धन्यवाद फ़ाइल के स्वरूप नीचे दिखाया गया है:टेक्स्ट फ़ाइल से numpy सरणी में डेटा पढ़ना

&SRS 
<MetaDataAtStart> 
multiple=True 
Wavelength (Angstrom)=0.97587 
mode=assessment 
background=True 
issid=py11n2g 
noisy=True 
</MetaDataAtStart> 
&END 
Two Theta(deg) Counts(sec^-1) 
10.0 41.0 
10.1 39.0 
10.2 38.0 
10.3 38.0 
10.4 41.0 
10.5 42.0 
10.6 38.0 
10.7 44.0 
10.8 42.0 
10.9 39.0 
11.0 37.0 
11.1 37.0 
11.2 45.0 
11.3 36.0 
11.4 37.0 
11.5 37.0 
11.6 40.0 
11.7 44.0 
11.8 45.0 
11.9 46.0 
12.0 44.0 
12.1 40.0 
12.2 41.0 
12.3 39.0 
12.4 41.0 
+0

तो क्या आप शीर्षलेख की जानकारी बिल्कुल नहीं चाहते हैं? – cm2

+0

मैं हेडर जानकारी भी पढ़ना चाहता हूं। :) – user3029076

+0

ठीक है, तो आप मूल रूप से हेडर को अलग से पार्स करते हैं; नीचे मेरा जवाब देखें। – cm2

उत्तर

20

आप पहली बार n पंक्तियों नहीं करना चाहते हैं, कोशिश (अगर कोई गुम डेटा है):

data = numpy.loadtxt(yourFileName,skiprows=n) 

या (यदि वहाँ डेटा याद कर रहे हैं):

data = numpy.genfromtxt(yourFileName,skiprows=n)  

आप तो हेडर सूचना पार्स करने के लिए चाहते हैं, तो आप वापस जाकर open कर सकते हैं फ़ाइल शीर्षक पार्स, उदाहरण के लिए:

fh = open(yourFileName,'r') 
for i,line in enumerate(fh): 
    if i is n: break 
    do_other_stuff_to_header(line) 
fh.close() 
+0

मुझे लगता है कि मुझे यह विचार मिला है, क्या मुझे हेडर में पढ़ने के लिए csv.dictreader का उपयोग करने की आवश्यकता होगी? – user3029076

+0

मेरे ऊपर जो कुछ है, वह लाइनों पर लूप होगा जब तक कि आप लाइन 'n' दबाएंगे और फिर यह रुक जाएगा। जब यह उन पर लूप करता है, तो आप जो कुछ भी करना चाहते हैं वह कर सकते हैं। – cm2

+0

मैं अंतिम एन लाइनों को कैसे आयात नहीं करूं? – Swift

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