2011-02-02 13 views
7

में दो 2 डी numpy arrays में शामिल होना मेरे पास दो 2 डी numpy arrays हैं, जो तीन बिंदुओं के बीच x/y दूरी का प्रतिनिधित्व करते हैं। मुझे एक ही सरणी में tuples के रूप में x/y दूरी की आवश्यकता है।दो 2 डी numpy arrays में 2-tuples

तो से:

x_dists = array([[ 0, -1, -2], 
       [ 1, 0, -1], 
       [ 2, 1, 0]]) 

y_dists = array([[ 0, -1, -2], 
       [ 1, 0, -1], 
       [ 2, 1, 0]]) 

मैं की जरूरत है:

dists = array([[[ 0, 0], [-1, -1], [-2, -2]], 
       [[ 1, 1], [ 0, 0], [-1, -1]], 
       [[ 2, 2], [ 1, 1], [ 0, 0]]]) 

मैं dstack/hstack/vstack/CONCATENATE, लेकिन उनमें से कोई लगते हैं के विभिन्न क्रमपरिवर्तन का उपयोग कर जो मैं चाहता करने के लिए कोशिश की है । कोड में वास्तविक सरणी विशाल होने के लिए उत्तरदायी हैं, इसलिए पाइथन में तत्वों को पुन: व्यवस्थित करना और "मैन्युअल रूप से" पुनर्गठन करना एक विकल्प नहीं है।

संपादित करें: यह है कि मैं क्या अंत में के साथ आया है: https://gist.github.com/807656

+1

है सिर्फ एक संयोग नहीं है कि 'x_dist' और' y_dist' ही कर रहे हैं क्या है? आपके ऐप में नकारात्मक दूरी का अर्थ क्या है? क्या '_dist' allways' सममित 'होगा, लेकिन uppertridiagonal भाग सिर्फ ऋणात्मक होगा? आप कितने अंक संभालने की उम्मीद कर रहे हैं? सरणी के इस ढेर का उद्देश्य क्या है? क्या आगे की गणना के लिए तत्व 'इष्टतम' क्रम में होंगे? बस कुछ क्रूर, धन्यवाद – eat

+0

यह संयोग है। उदाहरण बिंदु (0, 0), (1, 1), (2, 2) स्वच्छता के लिए हैं। _dist वास्तव में सममित है। सरणी को ढेर करने का उद्देश्य यह है कि मैं उन्हें बिंदुओं को स्थानांतरित करने के लिए उपयोग कर सकता हूं। लिंक किए गए गिस्ट देखें। – Zarkonnen

उत्तर

10
import numpy as np 
dists = np.vstack(([x_dists.T], [y_dists.T])).T 

रिटर्न dists की तरह आप उन्हें चाहते थे। इसके बाद यह "2-टुपल्स का एक एकल 2 डी सरणी" नहीं है, लेकिन एक सामान्य 3 डी सरणी है जहां तीसरा अक्ष दो मूल सरणी का संयोजन है।

आप देखते हैं:

dists.shape # (3, 3, 2) 
+1

यही वही है जो मैं चाहता था। मुझे डर है कि "2 डी ट्यूल्स के 2 डी सरणी" शब्द का उपयोग करना भ्रामक था। :( – Zarkonnen

+0

लेकिन प्रतीक्षा 'डिब्बे' का आपका उदाहरण स्पष्ट था :) – eumiro

7
numpy.rec.fromarrays([x_dists, y_dists], names='x,y') 
+0

शानदार! वही है जो मैं चाहता था। तो, उम, जैसा कि आप numpy के बारे में पता लग रहा है, क्या मैं इस जोड़ी दूरी की गणना करने के एक सौहार्दपूर्ण तरीके से संपादित किया गया कार्य है? – Zarkonnen

+0

संपादित करें: दरअसल, यह मुझे एक सरणी नहीं देता है, मुझे पता है कि कुछ भी कैसे करना है। – Zarkonnen

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