将numpy数组的每一列与另一个数组的每个值相乘

时间:2018-02-22 20:57:20

标签: python python-3.x numpy

假设我有以下两个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 个答案:

答案 0 :(得分: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]])

答案 1 :(得分:1)

您可以使用$info = [pscustomobject]@{ "name" = "bob"; "age" = "3"; "mail" = "you@me.com" } $info # prints with headers $info | Format-Table -HideTableHeaders # prints without headers 以及列表理解:

np.concatenate

这会给你

np.concatenate([m * x for x in c], axis=1)