【发布时间】:2021-03-05 15:59:39
【问题描述】:
我有一个这样的张量:
A=array([[[[ 1.4033688 , -0.95642966, 1.0958625 , -0.64104766],
[-1.2625898 , -0.59444463, 0.72382635, -0.5195144 ],
[ 0.15248759, 2.4054656 , 1.0738292 , 1.0531213 ],
[ 1.2878437 , -1.1945801 , -1.0729346 , -1.6739473 ]],
[[ 0. , -0. , 0. , -0. ],
[-0. , -0. , 0. , -0. ],
[ 0. , 0. , 0. , 0. ],
[ 0. , -0. , -0. , -0. ]]],
[[[ 0. , -0. , 0. , -0. ],
[-0. , -0. , 0. , -0. ],
[ 0. , 0. , 0. , 0. ],
[ 0. , -0. , -0. , -0. ]],
[[ 1.4033688 , -0.95642966, 1.0958625 , -0.64104766],
[-1.2625898 , -0.59444463, 0.72382635, -0.5195144 ],
[ 0.15248759, 2.4054656 , 1.0738292 , 1.0531213 ],
[ 1.2878437 , -1.1945801 , -1.0729346 , -1.6739473 ]]]],
dtype=float32)
特别是,
A[0][0]=[[ 1.4033688 , -0.95642966, 1.0958625 , -0.64104766],
[-1.2625898 , -0.59444463, 0.72382635, -0.5195144 ],
[ 0.15248759, 2.4054656 , 1.0738292 , 1.0531213 ],
[ 1.2878437 , -1.1945801 , -1.0729346 , -1.6739473 ]]
A[1][0]=[[[ 0. , -0. , 0. , -0. ],
[-0. , -0. , 0. , -0. ],
[ 0. , 0. , 0. , 0. ],
[ 0. , -0. , -0. , -0. ]]
A[0][1]=[[[ 0. , -0. , 0. , -0. ],
[-0. , -0. , 0. , -0. ],
[ 0. , 0. , 0. , 0. ],
[ 0. , -0. , -0. , -0. ]]
A[1][1]=[[ 1.4033688 , -0.95642966, 1.0958625 , -0.64104766],
[-1.2625898 , -0.59444463, 0.72382635, -0.5195144 ],
[ 0.15248759, 2.4054656 , 1.0738292 , 1.0531213 ],
[ 1.2878437 , -1.1945801 , -1.0729346 , -1.6739473 ]]
我想将 A 重塑为 (8 , 8) 数组,这样我就可以保持元素的位置,就好像数组刚刚删除了中间括号一样。也就是说,将A重新整形为新数组后,我们称这个新的整形数组A_reshaped,那么我希望A_reshaped等于下面的A
A_reshaped[:4,:4]=A[0][0]
A_reshaped[4:8,0:4]=A[1][0]
A_reshaped[:4,4:8]=A[0][1]
A_reshaped[4:8,4:8]=A[1][1]
简单的命令:
np.reshape(A,(8,8))[:4,:4]
不起作用,它会产生以下结果:
array([[ 1.4033688 , -0.95642966, 1.0958625 , -0.64104766],
[ 0.15248759, 2.4054656 , 1.0738292 , 1.0531213 ],
[ 0. , -0. , 0. , -0. ],
[ 0. , 0. , 0. , 0. ]],
dtype=float32)
感谢任何提示。
【问题讨论】:
-
原来的形状是什么? (2,2,4,4)?您可以将其重塑为 (4,4,4)。要获得 (8,8) 你需要先转置所以形状是 (2,4,2,4)
标签: numpy tensorflow reshape tensor