我有4个图像,每个图像的宽度和高度为8。它们属于形状为[4,8,8]
的向量。我将图像的向量重塑为[2,2,8,8]
形状的图像矩阵。
如何将矩阵内部的图像连接起来以生成单个图像,以使形状变为[16,16]
?我希望将图像连接起来,以保持它们在矩阵中的x,y位置-本质上就是将单独的图像缝合在一起成为一个图像。
我觉得可以轻松地在numpy
中甚至在tensorflow
中完成此操作,但是我对使用python的任何不错的解决方案持开放态度。
答案 0 :(得分:2)
您可以在不同的轴上使用numpy.concatenate
。这是一个缩小版本的示例,其中使用了4张形状为[2 2]
的图像,它生成了[4 4]
结果图像:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.array([[9, 10], [11, 12]])
d = np.array([[13, 14], [15, 16]])
ab = np.concatenate((a, b), axis=1)
cd = np.concatenate((c, d), axis=1)
abcd = np.concatenate((ab, cd), axis=0)
>>> print(abcd)
array([[ 1, 2, 5, 6],
[ 3, 4, 7, 8],
[ 9, 10, 13, 14],
[11, 12, 15, 16]])
>>> print(abcd.shape)
(4, 4)
只需将此代码修改为适合您的代码,而不是使用a, b, c, d
将图像按张量的第一维进行级联,类似于np.concatenate((t[0], t[1]), axis=1)
的{{1}}就是形状为{{1 }}。
否则,正如其他答案所建议的,您可以两次使用两次t
函数,但是我认为它的行为并不容易阅读,甚至代码更少。
答案 1 :(得分:1)
您可以使用np.hstack
两次,这样(较小的数组使它们可打印):
import numpy as np
original = np.array([[np.arange(16).reshape(4,-1)]*2]*2)
combined = np.hstack(np.hstack(original))
print(combined)
夹心给出:
[[ 0 1 2 3 0 1 2 3]
[ 4 5 6 7 4 5 6 7]
[ 8 9 10 11 8 9 10 11]
[12 13 14 15 12 13 14 15]
[ 0 1 2 3 0 1 2 3]
[ 4 5 6 7 4 5 6 7]
[ 8 9 10 11 8 9 10 11]
[12 13 14 15 12 13 14 15]]