我有一个包含有关图像信息的数组。它在名为“随机播放”的数组中包含有关21495张图像的信息。
np.shape(shuffled) = (21495, 1)
np.shape(shuffled[0]) = (1,)
np.shape(shuffled[0][0]) = (128, 128, 3) # (These are the image dimensions, with 3 channels of RGB)
如何将该数组转换为形状数组(21495、128、128、3)以馈入模型?
答案 0 :(得分:0)
我可以想到2种方法:
一种方法是使用numpy的vstack()
功能,但是当数组大小开始增加时,它的加班时间会变得很慢。
另一种方法(我使用的方法)是获取一个空列表,并继续使用.append()
将images数组追加到该列表,然后最终将该列表转换为numpy数组。
答案 1 :(得分:0)
尝试
np.stack(shuffled[:,0])
stack
(一种concatenate
的形式)在新的初始维度上连接数组的列表(或数组)。我们需要先消除尺寸为1的尺寸。
In [23]: arr = np.empty((4,1),object)
In [24]: for i in range(4): arr[i,0] = np.arange(i,i+6).reshape(2,3)
In [25]: arr
Out[25]:
array([[array([[0, 1, 2],
[3, 4, 5]])],
[array([[1, 2, 3],
[4, 5, 6]])],
[array([[2, 3, 4],
[5, 6, 7]])],
[array([[3, 4, 5],
[6, 7, 8]])]], dtype=object)
In [26]: arr.shape
Out[26]: (4, 1)
In [27]: arr[0,0].shape
Out[27]: (2, 3)
In [28]: np.stack(arr[:,0])
Out[28]:
array([[[0, 1, 2],
[3, 4, 5]],
[[1, 2, 3],
[4, 5, 6]],
[[2, 3, 4],
[5, 6, 7]],
[[3, 4, 5],
[6, 7, 8]]])
In [29]: _.shape
Out[29]: (4, 2, 3)
但是请注意,如果子阵列的形状不同,比如说一两个是黑白的,而不是3通道,那么这将不起作用。