如何将新列添加到4d numpy数组

时间:2018-05-08 07:28:02

标签: python arrays numpy

我正在尝试向我的图像数据集添加新列。

示例代码:

import numpy as np
A = np.arange(240).reshape(3,4,4,5)
print(type(A))
print(A.shape)
B = np.concatenate([A, np.ones((A.shape[0],4,4,5,1),dtype=int)], axis=1)

打印(B.shape)

给出错误:

ValueError: all the input arrays must have same number of dimensions

上下文:

将此视为读取图像的m个样本(nH =高度,nW =权重,nC =通道)。 数据集具有形状(m,nH,nW,nC),现在我想添加额外的列,反映图像是"好"例子或"坏"对象的例子。

因此,想要创建一个数据集,在数据集中添加标签以形成形状:(m,nH,nW,nC,l)其中l代表标签,可以具有0或1的值。
我怎样才能实现这一目标?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您不需要明确添加第五列。只需重塑并添加第五维。

import numpy as np
A = np.arange(240).reshape(3,4,4,5,1) # add the fifth dimension here
print(type(A))
print(A.shape)

设置"好"或者"坏"标签,只需访问A的最后一个维度

答案 1 :(得分:0)

更简单,没有重塑:

A = np.random.rand(3, 4, 4, 5)
B = A[None]           # Append a new dimension at the beginning, shape (1, 3, 4, 4, 5)
B = A[:,:,None]       # Append a new dimension in the middle, shape (3, 4, 1, 4, 5)
B = A[:,:,:,:,None]   # Append a new dimension at the end, shape (3, 4, 4, 5, 1)

基本上,的位置表示添加新维度的位置。