pythonnumpykronecker-product

How to multiply array by each element of second array and concatenate them?


My matrix:

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

I want c as:

np.array([[5, 10, 6, 12], [15, 20, 18, 24]])

Entry wise multiplication of a by b, then concatenate them. How to do this effectively without double loops?


Solution

  • What you are looking for is the Kronecker product. In Numpy, you can get it via numpy.kron():

    import numpy as np
    
    a = np.array([[1, 2], [3, 4]])
    b = np.array([5, 6])  # May also be 2D, as in the question
    c = np.kron(b, a)
    print(c)              
    # >>> [[ 5 10  6 12]
    #      [15 20 18 24]]
    

    The order of arguments in kron() matters here: writing kron(a, b) would produce the same values in c, but in different order, namely [[5, 6, 10, 12], [15, 18, 20, 24]].