在Numpy中从两个向量形成矩阵,允许一个向量重复

3 投票
2 回答
1184 浏览
提问于 2025-04-28 14:57

我想用numpy数组来创建一个矩阵,尽量节省资源。给定的内容是:

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数组有广播的方法,但我还没找到一个好的方法来实现。 如果有人能帮忙,我会非常感激。

谢谢, Rob

暂无标签

2 个回答

0

你可以结合使用 numpy.tilenumpy.hstack 这两个函数。

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

不过,我不太明白你想要的目标矩阵是什么样的。

2

你可以先对numpy.resize进行操作,调整a的大小,然后再用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]])  

撰写回答