在Numpy中从两个向量形成矩阵,允许一个向量重复
我想用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.tile
和 numpy.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]])