我有以下数组:
x = np.arange(24).reshape((2,3,2,2))
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11]]],
[[[12, 13],
[14, 15]],
[[16, 17],
[18, 19]],
[[20, 21],
[22, 23]]]])
我想将它重塑为(3,4,2)数组,如下所示:
array([[[ 0, 1],
[ 2, 3],
[12, 13],
[14, 15]],
[[ 4, 5],
[ 6, 7],
[16, 17],
[18, 19]],
[[ 8, 9],
[10, 11],
[20, 21],
[22, 23]]])
我试过使用重塑,但它给了我以下不是我想要的。
array([[[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11],
[12, 13],
[14, 15]],
[[16, 17],
[18, 19],
[20, 21],
[22, 23]]])
有人可以帮忙吗?
答案 0 :(得分:2)
使用transpose
,然后使用reshape
,就像这样 -
shp = x.shape
out = x.transpose(1,0,2,3).reshape(shp[1],-1,shp[-1])
答案 1 :(得分:1)
x = np.arange(24).reshape((2,3,2,2))
y = np.dstack(zip(x))[0]
print y
结果:
[[[ 0 1]
[ 2 3]
[12 13]
[14 15]]
[[ 4 5]
[ 6 7]
[16 17]
[18 19]]
[[ 8 9]
[10 11]
[20 21]
[22 23]]]
答案 2 :(得分:0)
您也可以像这样使用concatenate
-
out=np.concatenate((x),axis=1)
我会注意到那些,因为您提到这是为了提高性能,但这似乎并不比Divakar的建议快:
shp = x.shape
out = x.transpose(1,0,2,3).reshape(shp[1],-1,shp[-1])
如果有人愿意做基准测试或发现更快的东西,我很想知道。