用另一个数组的每个值乘以numpy数组的每一列

5
假设我有以下两个numpy数组:
In [251]: m=np.array([[1,4],[2,5],[3,6]])

In [252]: m
Out[252]: 
array([[1, 4],
       [2, 5],
       [3, 6]])

In [253]: c= np.array([200,400])

In [254]: c
Out[254]: array([200, 400])

我希望一步得到以下数组,但是我真的想不出来:

In [252]: k
Out[252]: 
array([[200, 800, 400, 1600],
       [400, 1000, 800, 2000],
       [600, 1200, 1200,2400]])
2个回答

12

你想要的转换被称为Kronecker积。Numpy拥有这个函数:numpy.kron:

In [1]: m = np.array([[1,4],[2,5],[3,6]])

In [2]: c = np.array([200,400])

In [3]: np.kron(c, m)
Out[3]: 
array([[ 200,  800,  400, 1600],
       [ 400, 1000,  800, 2000],
       [ 600, 1200, 1200, 2400]])

0
你可以使用 np.concatenate 和列表推导式:
np.concatenate([m * x for x in c], axis=1)

这将为您提供

array([[ 200,  800,  400, 1600],
       [ 400, 1000,  800, 2000],
       [ 600, 1200, 1200, 2400]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接