wake-up-neo.net

Multiplizieren Sie jede Spalte eines numpy-Arrays mit jedem Wert eines anderen Arrays

Angenommen, ich habe die folgenden zwei numpy-Arrays:

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])

Ich würde gerne das folgende Array in einem Schritt erhalten, aber für mein Leben kann ich es nicht verstehen:

In [252]: k
Out[252]: 
array([[200, 800, 400, 1600],
       [400, 1000, 800, 2000],
       [600, 1200, 1200,2400]])
5
Pearly Spencer

Die gewünschte Transformation wird als Kronecker-Produkt bezeichnet. Numpy hat diese Funktion als 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]])
11
myrtlecat

Sie können np.concatenate zusammen mit dem Listenverständnis verwenden:

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

Das gibt dir

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