为了账号安全,请及时绑定邮箱和手机立即绑定

想要在numpy elementwise中定义一个ndarray

想要在numpy elementwise中定义一个ndarray

阿晨1998 2021-04-08 10:08:38
我有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元素,它将对我有很多好处。
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以像这样使用广播:


a.T[:, :, None] * b

例子:


import numpy as np

np.random.seed(444)


i, j, k = 2, 10, 3

a = np.random.randn(i, j)

b = np.random.randn(i, k)

c = a.T[:, :, None] * b

print(c.shape)

# (10, 2, 3)

移置源于您要在内部为每一列进行内部操作的事实a,并[:, :, None]扩展了维度以启用广播,如NumPy的广播规则中所述。


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号