3 回答
TA贡献2019条经验 获得超9个赞
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]]])
TA贡献1895条经验 获得超7个赞
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)
TA贡献1773条经验 获得超3个赞
有两种可能的结果重排(以下为@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]]])
添加回答
举报