python - Dictionary-like efficient storing of scipy/numpy arrays -


पृष्ठभूमि

इस मुद्दे के साथ मैं काम कर रहा हूं:

  • एक प्रयोग के संदर्भ में मैं अपने अनुसंधान के लिए डिजाइन कर रहा हूं, मैं बड़ी संख्या में बड़े (लंबाई 4 एम) सरणियों का उत्पादन करता हूं जो कुछ विरल हैं, और इस प्रकार < (उदाहरण के लिए अंतरिक्ष लाभ / हानि नहीं है)। Li>

    इनमें से प्रत्येक सरणियों को स्ट्रिंग (अर्थात् एक शब्द) के साथ जोड़ा जाना चाहिए, जो कि डेटा को समझने के लिए किया जाता है, क्योंकि वे अर्थ स्ट्रिंग हैं जो कि स्ट्रिंग के अर्थ का प्रतिनिधित्व करते हैं। मुझे इस युग्मन को संरक्षित करने की आवश्यकता है।

  • सूची में प्रत्येक शब्द के वैक्टर एक-एक करके बनाए जाते हैं, और आगे बढ़ने से पहले डिस्क में संग्रहीत होते हैं अगले शब्द पर।

  • उन्हें डिस्क में ऐसे तरीके से संग्रहित किया जाना चाहिए जो फिर से शब्दकोश-जैसी सिंटैक्स से प्राप्त किया जा सकता है उदाहरण के लिए यदि सभी शब्द डीबी की तरह फाइल में जमा हो जाते हैं, तो मुझे इस फाइल को खोलने और vector = wordDB [word] जैसी बातें करने में सक्षम होना चाहिए।

    वर्तमान पहुंच

    मैं वर्तमान में क्या कर रहा हूं:

    • प्रयोग के लिए < कोड> wordDB

    • प्रत्येक बार वेक्टर (वर्तमान में lil_matrix से scipy का उपयोग कर रहा है

    • जब मैं चाहता हूं कि एक शब्द के लिए एक शब्द का निर्माण किया गया है, तो शेक्टर में वेक्टर को संचित कर: wordDB [word] = vector

    • मूल्यांकन के दौरान वैक्टर का उपयोग करें, मैं रिवर्स करूँगा: शेल्फ को खोलें, और फिर प्रत्येक शब्द के लिए vector = wordDB [word] करके वैक्टर को याद करें, ताकि सभी आवश्यक न हों वैक्टर को राम में रखा जाना चाहिए (जो असंभव होगा)।

      उपरोक्त 'समाधान' निर्दिष्ट की समस्या को सुलझाने के मामले में मेरी जरूरतों को पूरा करता है I मुद्दा यह है कि जब मैं बड़ी मात्रा में शब्दों के लिए वैक्टर बनाने और स्टोर करने के लिए इस पद्धति का उपयोग करना चाहता हूं, तो मैं बस डिस्क स्थान से बाहर निकलता हूं।

      यह, जहां तक ​​मैं बता सकता हूं, समतल संग्रहित डेटा को अचार करता है, जो बड़े सरणियों को संचयित करने का एक कारगर तरीका नहीं है, इस प्रकार इस भंडारण की समस्या को समतल के साथ असभ्य शब्दों के साथ प्रदान करने के लिए शब्दों से निपटने की आवश्यकता है ।

      समस्या

      इस प्रकार सवाल है: क्या मेरे सेट्स को सेट करने का एक तरीका है जो:

      1. scipy.save

      2. मेरी आवश्यकता को पूरा करें कि डेटा को डिक्शन के रूप में पढ़ा जा सकता है, शब्दों और सरणियों के बीच संबंध बनाए रखना है?

        सज्जनों और देवियों, किसी भी मदद के लिए अग्रिम धन्यवाद या सुझाव जो आप कर सकते हैं।

        जोश के रूप में एडेल ने पहले ही सुझाया है, मैं एचडीएफ 5 के लिए जाता हूं, सबसे आसान तरीका है h5py का उपयोग करना है:

        आप सिंटैक्स जैसे शब्दकोश के साथ एक सरणी के लिए कई विशेषताओं को जोड़ सकते हैं: <पूर्व> dset.attrs ["नाम"] = "मेरा डाटासेट"

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

Comments