-
慕少森
a = np.arange(18).reshape(9,2)b = a.reshape(3,3,2).swapaxes(0,2)# a: array([[ 0, 1], [ 2, 3], [ 4, 5], [ 6, 7], [ 8, 9], [10, 11], [12, 13], [14, 15], [16, 17]])# b:array([[[ 0, 6, 12], [ 2, 8, 14], [ 4, 10, 16]], [[ 1, 7, 13], [ 3, 9, 15], [ 5, 11, 17]]])
-
人到中年有点甜
numpy具有完成此任务的出色工具(“ numpy.reshape”)链接,用于重塑文档a = [[ 0 1] [ 2 3] [ 4 5] [ 6 7] [ 8 9] [10 11] [12 13] [14 15] [16 17]]`numpy.reshape(a,(3,3))`您也可以使用“ -1”把戏`a = a.reshape(-1,3)`“ -1”是通配符,当第二维为3时,它将使numpy算法决定要输入的数字所以是..这也可以工作: a = a.reshape(3,-1)而这: a = a.reshape(-1,2) 无能为力这: a = a.reshape(-1,9) 将形状更改为(2,9)
-
慕容3067478
有两种可能的结果重排(以下为@eumiro的示例)。Einops软件包提供了强有力的注释来明确描述此类操作>> a = np.arange(18).reshape(9,2)# this version corresponds to eumiro's answer>> einops.rearrange(a, '(x y) z -> z y x', x=3)array([[[ 0, 6, 12], [ 2, 8, 14], [ 4, 10, 16]], [[ 1, 7, 13], [ 3, 9, 15], [ 5, 11, 17]]])# this has the same shape, but order of elements is different (note that each paer was trasnposed)>> einops.rearrange(a, '(x y) z -> z x y', x=3)array([[[ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]], [[ 1, 3, 5], [ 7, 9, 11], [13, 15, 17]]])