पर एक बहुआयामी numpy सरणी भेजें अच्छा दिन,सॉकेट
मैंने इसकी खोज की है लेकिन किसी भी प्रतिक्रिया के साथ नहीं आया है। मैं एक सॉकेट पर एक बहु आयामी numpy सरणी भेजना चाहता हूँ। इसलिए, मैं इसे एक स्ट्रिंग में बदलने का फैसला किया:
>>> import numpy as np
>>> x = np.array([[0, 1], [2, 3]])
>>> xstring = x.tostring()
>>> print xstring
>>> print x
[[0 1]
[2 3]]
>>> print xstring
>>> nparr = np.fromstring(xstring, dtype=np.uint8)
>>> print nparr
[0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0]
वहाँ वैसे भी है मैं, करने के लिए किसी भी तरह स्ट्रिंग के लिए रूपांतरण प्राप्त कर सकते हैं इसके बारे में आयाम को बचाने:
हालांकि, यह सरणी के प्रतिनिधित्व को नष्ट कर देता ?
अचार बहुत धीमा था, और मेरे 2 डी सरणी बड़े पैमाने पर बना दिया। यह कभी-कभी मेरे कार्यक्रम को कुछ महत्वपूर्ण आतंकवादियों के साथ दुर्घटनाग्रस्त कर देता है – ovfstack
@ovfstack: आप सही हैं। पायथन 3 पर ओवरहेड बड़े सरणी के लिए नगण्य है और यह '.osting()' के रूप में धीमा गति से दोगुना चलता है। पाइथन 2 के लिए आपको एक बड़ा सुधार देखना चाहिए यदि आप 'प्रोटोकॉल = 2' निर्दिष्ट करते हैं, हालांकि यह अभी भी इस मामले में '.osting()' से 4 गुना धीमा प्रतीत होता है। –
मैंने अभी आईकनकोड फ़ंक्शन का उपयोग किया है जो opencv प्रदान करता है। यह मेरी सरणी को "संपीड़ित" करने में भी सक्षम था और imdecode सभ्य सटीकता के साथ इसे पुनर्प्राप्त करने में सक्षम था – ovfstack