पर ऑपरेटिंग मै मैटलैब से आने वाले अजगर के लिए नया हूं। मेरे पास matlab v7.3 (HDF5) प्रारूप में सहेजा गया एक बड़ा स्पैस मैट्रिक्स है। मैंने अब तक h5py
और tables
का उपयोग करके फ़ाइल में लोड करने के दो तरीके पाए हैं। हालांकि मैट्रिक्स पर काम करना या तो बहुत धीमा प्रतीत होता है।लोडिंग मैटलैब स्पैर मैट्रिक्स -व 7.3 (एचडीएफ 5) के साथ पाइथन में सहेजा गया और
>> whos
Name Size Bytes Class Attributes
M 11337x133338 77124408 double sparse
>> tic, sum(M(:)); toc
Elapsed time is 0.086233 seconds.
का उपयोग करते हुए टेबल: उदाहरण के लिए, matlab में
t = time.time()
sum(f.root.M.data)
elapsed = time.time() - t
print elapsed
35.929461956
h5py का उपयोग करना:
t = time.time()
sum(f["M"]["data"])
elapsed = time.time() - t
print elapsed
(मैं इंतज़ार कर छोड़ दिया ...)
[संपादित करें]
टिप्पणियों के आधार पर @bpgergo से, मैं जोड़ने चाहिए कि मैं एक numpy
सरणी या निम्न दो तरह से एक scipy
विरल सरणी में परिणाम h5py
(f
) द्वारा में लोड परिवर्तित करने की कोशिश की है:
from scipy import sparse
A = sparse.csc_matrix((f["M"]["data"], f["M"]["ir"], f["tfidf"]["jc"]))
या
data = numpy.asarray(f["M"]["data"])
ir = numpy.asarray(f["M"]["ir"])
jc = numpy.asarray(f["M"]["jc"])
A = sparse.coo_matrix(data, (ir, jc))
लेकिन इन दोनों परिचालनों में भी बहुत धीमी गति से हैं।
क्या मुझे कुछ याद आ रही है?
फ़ाइल लोड हो रहा है Matlab (<1sec) में लगभग तात्कालिक था इसलिए मुझे लगता है कि तुलना निष्पक्ष थी, लेकिन मैं अंतर्निहित योग समारोह के बारे में अपना मुद्दा लेता हूं। मुझे लगता है कि मैं जितना कर रहा हूं उतना अधिक लोग कर रहे हैं (मैटलैब से पायथन तक जा रहे हैं) तो मैटलैब फाइलों में लोड होने के लिए थोड़ा और समर्थन होने पर यह अच्छा होगा ... – tdc
ठीक है, मैं नहीं कर सकता अपनी फ़ाइल के बिना इसे परीक्षण करें, लेकिन वास्तव में अजगर में सरणी लोड करना बहुत तेज़ होना चाहिए। जो आप वर्तमान में कर रहे हैं वह वास्तव में इसे लोड नहीं कर रहा है। यह प्रभावी ढंग से स्मृति-मैप किए गए सरणी को प्रभावी बनाता है। इसे किसी भी भाषा में स्वतंत्र रूप से एक्सेस करना बहुत धीमा होगा, क्योंकि यह ज्यादातर डिस्क चाहता है। क्या उपर्युक्त उदाहरण कोड अभी भी धीमा है? साथ ही, 'scipy.io.loadmat' http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html#scipy.io.loadmat पर एक नज़र डालें, हालांकि मैं नहीं हूं सुनिश्चित करें कि यह स्पैर सरणी का समर्थन करता है। –
को अभी तक कोशिश करने का मौका नहीं मिला लेकिन इनपुट के लिए धन्यवाद – tdc