想要在numpy elementwise中定义一个ndarray

我有2个2d numpy数组,A的形状为(i,j),B的形状为(i,k),其中j >> k。我想定义一个新的3d数组C,这样C中的每个元素都是A中每一列与整个矩阵B的广播元素明智乘积。换句话说,作为普通的python循环,我会这样做

for x in range(j):
    C[x] = A[:,x]*B

但是j在这种情况下非常大,如果我能够使用Numpy的功能像上面的循环中那样按元素定义ndarray C元素,它将对我有很多好处。


阿晨1998
浏览 172回答 1
1回答

倚天杖

您可以像这样使用广播:a.T[:, :, None] * b例子:import numpy as npnp.random.seed(444)i, j, k = 2, 10, 3a = np.random.randn(i, j)b = np.random.randn(i, k)c = a.T[:, :, None] * bprint(c.shape)# (10, 2, 3)移置源于您要在内部为每一列进行内部操作的事实a,并[:, :, None]扩展了维度以启用广播,如NumPy的广播规则中所述。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python