在每行的开头和结尾添加一个n维numpy数组

时间:2018-01-26 15:40:32

标签: python python-3.x numpy

我有一个维度的NumPy数组data

(100,2048)

我想在开头添加11个,在每行末尾添加11个。

获取data.shape = (100, 11+2048+11)

我尝试了以下内容:

y = np.array([[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]])
z = np.append(y, data[0], axis=0)

通过从左侧添加零来适用于第一个data[0]。 但是,即使只有一行,我也无法在右侧添加。

我正在寻找类似的东西:

 z = np.append([y, data,y], axis=0)

例如:

z[0]= [1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,
.......................,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]

.....表示2048值

2 个答案:

答案 0 :(得分:2)

您可以使用np.pad

np.pad(z, ((0,0),(11,11)), 'constant', constant_values=1)

说明:((0,0), (11,11))表示填充到每个轴边缘的值的数量。这里我们在0之前填充0值,在0之后填充0值(行)和每个列之前和之后的11。对于填充,我们使用常量值1。

答案 1 :(得分:1)

使用零创建一个新数组并将其填充到所需位置:

offset = 11
z = np.ones((data.shape[0], data.shape[1] + offset * 2), dtype=data.dtype)
z[:, offset:z.shape[1] - offset] = data