के बीच गड़बड़ी इंटरकवर्जन मैं नम्पी में रैखिक और बहुआयामी अनुक्रमण के बीच इंटरकॉन्टर करने का एक तेज़ तरीका ढूंढ रहा हूं।बहुआयामी और रैखिक अनुक्रमण
मेरा उपयोग कंक्रीट बनाने के लिए, मेरे पास एन कणों का एक बड़ा संग्रह है, प्रत्येक ने 5 फ्लोट मान (आयाम) को एनएक्स 5 सरणी दिया है। मैं तब प्रत्येक आयाम को प्रत्येक आयाम को 5 आयामी अंतरिक्ष में एक बिन असाइन करने के लिए बिन सीमाओं के उचित विकल्प के साथ numpy.digitize का उपयोग करके बिन करता हूं।
N = 10
ndims = 5
p = numpy.random.normal(size=(N,ndims))
for idim in xrange(ndims):
bbnds[idim] = numpy.array([-float('inf')]+[-2.,-1.,0.,1.,2.]+[float('inf')])
binassign = ndims*[None]
for idim in xrange(ndims):
binassign[idim] = numpy.digitize(p[:,idim],bbnds[idim]) - 1
दूतावास में पंक्तियां होती हैं जो बहुआयामी सूचकांक से मेल खाते हैं। मैं तो एक रेखीय सूचकांक करने के लिए बहुआयामी सूचकांक में परिवर्तित करना चाहते हैं, तो मुझे लगता है कि मैं कुछ ऐसा करना चाहते हैं जाएगा:
linind = numpy.arange(6**5).reshape(6,6,6,6,6)
यह प्रत्येक बहुआयामी सूचकांक एक रेखीय अनुक्रमणिका से मैप करने के लिए के लिए एक लुक-अप देना होगा। इसके बाद आप का उपयोग कर वापस जा सकते हैं:
mindx = numpy.unravel_index(x,linind.shape)
मैं कहां से कठिनाइयां आ रही हूँ कैसे binassign लेने के लिए (Nx5 सरणी) लगाना है प्रत्येक पंक्ति में बहुआयामी सूचकांक युक्त, और coverting है कि एक 1 दिन रैखिक सूचकांक करने के लिए, द्वारा रैखिक अनुक्रमण सरणी linind टुकड़ा करने के लिए इसका उपयोग कर।
यदि किसी के पास बहु-आयामी सूचकांक और रैखिक सूचकांक के बीच आगे और आगे जाने के लिए एक (या कई) लाइन इंडेक्सिंग चाल है जो सभी एन कणों के लिए ऑपरेशन को सदिश बनाती है, तो मैं आपकी अंतर्दृष्टि की सराहना करता हूं।
धन्यवाद, मैं अपने खुद के समाधान में अपने सुझाव सामान्यीकृत। – JoshAdel