2010-03-03 10 views
14

में बड़ी डेटा फ़ाइलों से निपटने का तरीका मुझे आश्चर्य है कि गणित में बड़ी फ़ाइलों के साथ काम करने का कोई तरीका मौजूद है या नहीं? वर्तमान में मेरे पास तालिका डेटा के साथ लगभग 500 एमबी फ़ाइल है।वोल्फ्राम मैथमैटिका

Import["data.txt","Table"]; 

वैकल्पिक तरीका क्या है?

+0

इस तरह से क्या गलत है? – kennytm

+0

बड़ी फ़ाइल लोड करने में बहुत अधिक समय लगता है। और मुझे भी बहुत याद आती है। –

+3

इसी तरह के प्रश्न को फिर से पूछा गया था: http://stackoverflow.com/questions/7525782/import-big-files-arrays-with-mathematica। मैंने घने और स्पैस टेबल के लिए दो समाधान दिए, जो इस पृष्ठ पर आने वाले लोग उपयोगी पा सकते हैं। वे अभी भी धीमे हैं, लेकिन 'आयात' से अधिक स्मृति-कुशल हैं। –

उत्तर

13

OpenRead["file"] का उपयोग करें जो आपको InputStream ऑब्जेक्ट देता है जिस पर आप Read[stream] का उपयोग कर सकते हैं। डेटा फ़ाइल के स्वरूपण के आधार पर आपको Read[] में RecordSeparators के लिए कस्टम विकल्प मान सेट करने की आवश्यकता हो सकती है।

उदाहरण:

In[1]:= str = OpenRead["ExampleData/USConstitution.txt"]  
Out[1]= InputStream["ExampleData/USConstitution.txt", 24] 

In[2]:= Read[str, Word]  
Out[2]= "We"  
In[3]:= Read[str, Word] 
Out[3]= "the"  
In[4]:= Read[str, Record] 
Out[4]= "People of the United States, in Order to form a more perfect Union," 
+8

जब आप पूरा कर लें तो स्ट्रीम को बंद करना याद रखना होगा। इसके अलावा, अगर आप ऑपरेशन को रोक देते हैं, तो स्ट्रीम खुली रहेगी। इसके परिणामस्वरूप बुरा आश्चर्य हो सकता है। इसलिए, मैं आपके पढ़ने के कोड को 'चेकएबॉर्ट' में निरस्त करने के लिए लपेटने की अनुशंसा करता हूं, और तब तक स्ट्रीम को बंद कर दें चाहे ऑपरेशन निरस्त हो या नहीं। – rcollyer

+0

उत्कृष्ट बिंदु! – Timo

4

तुम भी एक डेटाबेस (उदाहरण के MySQL के लिए) है और यह पहुँच मेथेमेटिका से DatabaseLink

+0

महान सलाह! धन्यवाद –

1

का उपयोग कर समारोह में अपने डेटा लोड कर सकता है DumpSave भी बड़े डेटासेट को बचाने के लिए सहायक हो सकता है। यह गणित के आंतरिक प्रारूप में डेटा बचाता है, इसलिए यह दोनों समय और फ़ाइल आकार में अधिक कुशल है।

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