【问题标题】:Adding ones to n-dimensional numpy array at the beginning and at the end of each row在每行的开头和结尾将 1 添加到 n 维 numpy 数组
【发布时间】:2018-01-26 15:40:32
【问题描述】:

我有一个 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 个值

【问题讨论】:

    标签: python python-3.x numpy


    【解决方案1】:

    你可以使用np.pad:

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

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

    【讨论】:

    • Original :) 那么,np.padnp.lib.pad 的别名吗?甚至 numpy 文档中的示例也使用 np.lib.pad
    • @kmario23 不确定文档为什么使用np.lib.padnp.padnp.lib.pad 都可以正常工作。
    【解决方案2】:

    用零创建一个新数组并在需要的位置填充它:

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

    【讨论】:

    • 谢谢@Mike。它运作良好,但我需要不为零的。但是,如果 np.ones() 会改变我的 2048 值
    猜你喜欢
    • 2011-05-26
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多