我在值上有两个相同的张量,但在形状上却不同,如下所示:
output_image1 =
[[[[3. 1.]
[2. 7.]]
[[5. 4.]
[9. 8.]]]
[[[3. 3.]
[1. 4.]]
[[6. 5.]
[7. 2.]]]]
output_image2 =
[[[[3]
[1]
[5]
[4]]
[[2]
[7]
[9]
[8]]
[[3]
[3]
[6]
[5]]
[[1]
[4]
[7]
[2]]]]
output_image1.shape = (2, 2, 2, 2)
output_image2.shape = (1, 4, 4, 1)
如何使用相同的值将image1的形状更改为image2。我的意思是从(2,2,2,2)->(1,4,4,1)并具有与image2相同的值。
答案 0 :(得分:0)
这需要移调和重塑
生成此图像比生成图像更容易,但是我认为映射正确:
In [154]: arr = np.arange(16).reshape(2,2,2,2)
In [155]: arr
Out[155]:
array([[[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]]],
[[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]]])
一个reshape(4,4)
将创建[0,1,2,3]
,依此类推,但是您想要[0,1,4,5]
,因此我们需要交换中间轴。第一个和最后一个轴的顺序不变。
In [156]: arr.transpose(0,2,1,3)
Out[156]:
array([[[[ 0, 1],
[ 4, 5]],
[[ 2, 3],
[ 6, 7]]],
[[[ 8, 9],
[12, 13]],
[[10, 11],
[14, 15]]]])
现在只需重塑:
In [157]: arr.transpose(0,2,1,3).reshape(4,4)
Out[157]:
array([[ 0, 1, 4, 5],
[ 2, 3, 6, 7],
[ 8, 9, 12, 13],
[10, 11, 14, 15]])
或具有增加的单例尺寸:
In [158]: arr.transpose(0,2,1,3).reshape(1,4,4,1)
Out[158]:
array([[[[ 0],
[ 1],
[ 4],
[ 5]],
[[ 2],
[ 3],
[ 6],
[ 7]],
[[ 8],
[ 9],
[12],
[13]],
[[10],
[11],
[14],
[15]]]])
答案 1 :(得分:0)
我找到了答案,也许对其他人有帮助。我们应该使用此功能:
s = s.replaceAll("(?<=^|;)null(?=$|;)", "");