2011-02-02 14 views
7

Üç nokta arasındaki x/y mesafelerini temsil eden iki adet 2B sayısal dizilerim var. Tek bir dizide x/y mesafelerine tuple ihtiyacım var.İki 2B sayısal dizileri 2-tuplların tek bir 2B dizisine ekleme

Yani gelen:

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

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

ihtiyacım var: İstediğimi yapmak dstack/hstack/vstack/concatenate, ancak bunların hiçbiri görünmek çeşitli permütasyon kullanılarak denedim

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

. Koddaki gerçek diziler devasadır, bu yüzden pythondaki elemanlar üzerinde yineleme yapmak ve "manuel" olarak yeniden düzenleme yapmak hıza uygun bir seçenek değildir.

Düzenleme: Bu Sonunda geldi budur: https://gist.github.com/807656

+1

mi sadece bir tesadüf 'x_dist' ve' aynı y_dist' olmasıdır? Ayrıca uygulamanızda negatif mesafenin anlamı nedir? Her zaman 'simetrik' olur mu, ama üppertridiagonal kısım sadece olumsuz mu olurdu? Ne kadar puan almayı bekliyorsunuz? Bu dizilerin istiflenmesinin amacı nedir? Daha sonraki hesaplamalar için elemanlar 'optimal' düzende olur mu? Sadece bazı öğreticiler, teşekkürler – eat

+0

Bu tesadüf. Örnek noktalar, akıl sağlığı için (0, 0), (1, 1), (2, 2) dir. _dist gerçekten simetriktir. Dizileri istifleme amacı, etrafındaki noktaları hareket ettirmek için kullanabilmem. Bağlantılı gist bakın. – Zarkonnen

cevap

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

döner onları istediği gibi dists. Daha sonra, "2-tekli tek bir 2D dizi" değil, üçüncü eksenin iki orijinal dizinin birleştirilmesi olduğu normal bir 3B dizi değildir.

Görüyorsunuz:

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

Gerçekten istediğim buydu. "2-tuple 2B dizi" teriminin kullanımımın yanıltıcı olduğunu düşünüyorum. :( – Zarkonnen

+0

Ama beklenen 'dists' örneğiniz açıktı :) – eumiro

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

Parlak! Tam olarak istediğim buydu. Bu yüzden, numpy hakkında bildiğiniz gibi görmek, bu ikili mesafeleri hesaplamanın akılcı bir şekilde düzenlediğim işlev midir? – Zarkonnen

+0

Düzenleme: Aslında, bu bana nasıl bir şey yapılacağını biliyorum bir dizi vermez. – Zarkonnen