python 与两个2D矩阵相乘以输出3D矩阵

nkkqxpd9  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(154)

我想知道计算这种乘法的好方法。
它只是将x[i]乘以x元素,得到[2, 2, 3]矩阵。

>>> x
array([[0, 1, 2],
       [3, 4, 5]])
>>> output
array([[[ 0,  1,  4],
        [ 0,  4, 10]],

       [[ 0,  4, 10],
        [ 9, 16, 25]]])

我尝试了下面的代码,想知道使用numpy的更快版本。

np.array([
    np.multiply(x[i], x) 
    for i in range(x.shape[0])
])
e4eetjau

e4eetjau1#

有两种直接的方法可以做到这一点,第一种是使用broadcasting,第二种是使用einsum。我推荐使用timeit,以比较不同版本的速度与您心目中的应用程序:

out_broadcast = x[:, None, :] * x
out_einsum = np.einsum('ij,kj->ikj',x,x)

相关问题