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

Numpy 矩阵减法不同维度

Numpy 矩阵减法不同维度

猛跑小猪 2022-10-05 16:34:32
我目前有一个尺寸为 40 x 3 x 3 x 5 x 1000 的 5D numpy 数组,其中尺寸分别由 axbxcxdxe 标记。我有另一个 3 x 1000 尺寸的 2D numpy 数组,其中尺寸分别由 bxe 标记。我希望从 2D 数组中减去 5D 数组。我想到的一种方法是将 2D 扩展为 5D 数组(因为 2D 数组不会因其他 3 维的所有组合而改变)。我不确定我可以使用什么数组方法/numpy 函数来执行此操作。我倾向于开始迷失 nD 数组操作。谢谢你的帮助。
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

In [217]: a,b,c,d,e = 2,3,4,5,6                                                                        

In [218]: A = np.ones((a,b,c,d,e),int); B = np.ones((b,e),int)                                         

In [219]: A.shape                                                                                      

Out[219]: (2, 3, 4, 5, 6)

In [220]: B.shape                                                                                      

Out[220]: (3, 6)

In [221]: B[None,:,None,None,:].shape   # could also use reshape()                                                               

Out[221]: (1, 3, 1, 1, 6)

In [222]: C = B[None,:,None,None,:]-A                                                                  

In [223]: C.shape                                                                                      

Out[223]: (2, 3, 4, 5, 6)

第一个None不是必需的;numpy 将根据需要添加它,但作为人类,它可能有助于查看它。


查看完整回答
反对 回复 2022-10-05
?
当年话下

TA贡献1890条经验 获得超9个赞

IIUC,假设您的数组是 a 和 b:

np.swapaxes(np.swapaxes(a, 1, 3) - b, 1, 3)


查看完整回答
反对 回复 2022-10-05
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信