2014-10-20 99 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)) 

虽然我不确定是否理解了您的目标矩阵。