2014-10-20 93 views
3

重複使用numpy的陣列欲最經濟創造這樣的矩陣: 給出形成從numpy的2個向量矩陣,其中的1矢量

from numpy import array 
a = array(a1,a2,a3,...,an) 
b = array(b1,...,bm) 

應被處理以矩陣M:

M = array([[a1,a2,b1,...,an], 
      ...   ..., 
      [a1,a2,bm,...,an]] 

我知道numpy數組的廣播方法,但找不到一個好方法。 任何幫助將不勝感激,

歡呼聲, 羅布

+1

所以B'的'一個元件插入作爲第三元件矩陣中每個'a'的副本是什麼? – APerson 2014-10-20 18:27:13

+0

是的,所以如果a =(1,2,3)和b =(4,5),比方說我想在第3列b,我的M = [[1,2,4,3],[1, 2,5,3]] – tee 2014-10-20 18:54:54

回答

2

可以在a先用numpy.resize,然後在重新調整大小陣列上使用numpy.insert所需索引添加b的項目:

In [101]: a = np.arange(1, 4) 

In [102]: b = np.arange(4, 6)           

In [103]: np.insert(np.resize(a, (b.shape[0], a.shape[0])), 2, b, axis=1)                  
Out[103]: 
array([[1, 2, 4, 3],              
     [1, 2, 5, 3]]) 
+0

非常感謝,確實!奇蹟般有效。 – tee 2014-10-20 20:24:56

0

您可以使用numpy.tilenumpy.hstack功能的組合。

M = numpy.repeat(numpy.hstack(a, b), (N,1)) 

雖然我不確定是否理解了您的目標矩陣。