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

如何在Numpy中将数组展平为矩阵?

如何在Numpy中将数组展平为矩阵?

慕标5832272 2021-09-14 21:17:08
我正在寻找一种优雅的方法,根据指定要保留的维度的单个参数将任意形状的数组展平为矩阵。为了说明,我想def my_func(input, dim):    # code to compute output    return output例如给定一个inputshape 数组2x3x4,output应该是dim=0一个 shape 数组12x2;对于dim=1形状数组8x3;对于dim=2形状数组6x8。如果我只想压平最后一个维度,那么这很容易通过input.reshape(-1, input.shape[-1])但我想添加添加的功能dim(优雅地,不经过所有可能的情况+检查 if 条件等)。可以先交换维度,使感兴趣的维度在尾随,然后应用上述操作。有什么帮助吗?
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

我们可以置换轴并重塑 -


# a is input array; axis is input axis/dim

np.moveaxis(a,axis,-1).reshape(-1,a.shape[axis])

从功能上讲,它基本上是将指定的轴推到后面,然后重塑保持该轴的长度以形成第二个轴并合并其余的轴以形成第一个轴。


样品运行 -


In [32]: a = np.random.rand(2,3,4)


In [33]: axis = 0


In [34]: np.moveaxis(a,axis,-1).reshape(-1,a.shape[axis]).shape

Out[34]: (12, 2)


In [35]: axis = 1


In [36]: np.moveaxis(a,axis,-1).reshape(-1,a.shape[axis]).shape

Out[36]: (8, 3)


In [37]: axis = 2


In [38]: np.moveaxis(a,axis,-1).reshape(-1,a.shape[axis]).shape

Out[38]: (6, 4)


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

添加回答

举报

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