如何将数组乘以第二个数组的每个元素并将它们连接起来?

Los*_*st1 1 python numpy kronecker-product

我的矩阵:

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
Run Code Online (Sandbox Code Playgroud)

我想要c作为:

np.array([[5, 10, 6, 12], [15, 20, 18, 24]])
Run Code Online (Sandbox Code Playgroud)

逐项乘以ab然后将它们连接起来。如何在没有双循环的情况下有效地做到这一点?

sim*_*mon 5

您正在寻找的是克罗内克产品。在 Numpy 中,您可以通过以下方式获取它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]]
Run Code Online (Sandbox Code Playgroud)

这里参数的顺序很kron()重要:写作kron(a, b)会在 中​​产生相同的值c,但顺序不同,即[[5, 6, 10, 12], [15, 18, 20, 24]]