2014-02-08 65 views
1

數對陣列是否有numpy的一個簡單的方法而無需循環,以產生數對從2門維numpy的陣列(載體)的陣列?生成從2個numpy的矢量

輸入:

a = [1, 2, 3] 
b = [4, 5, 6] 

輸出:

c = [(1,4), (1,5), (1,6), (2,4), (3,5), (2,6), (3,4), (3,5), (3,6)] 

我想知道如果有,做類似的東西,以這樣的功能:

c = [] 
for i in range(len(a)): 
    for j in range(len(b)): 
     c.append((a[i], b[j])) 

回答

8

您可以使用itertools.product此:

from itertools import product 

c = list(product(a, b)) 

這給:在`C = [(I,J),其中i:

c == [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)] 
+2

我會接受這個答案,因爲它是有效的,但我離開它使用一個簡單的列表理解您在b J]' – marillion

+1

你怎麼是指在C元素的每個座標? – Bran

+3

爲了在以後任何人可以做一些諸如:'ordered_pa​​irs = np.column_stack((A,B))...''返回[[1 4] [2 5] [3 6]]'用於OPS問題。 - @零下-273K回答你,你可以使用訪問訂購的每個元件在有序對:'ordered_pa​​irs [0,0]',這將導致1被返回。如果您想要選擇在每個元件中的第二個數字就可以使用'[:,1]' – anshanno