【问题标题】:pad numpy array with the opposite side of itself用自身的另一侧填充 numpy 数组
【发布时间】:2018-12-06 12:53:09
【问题描述】:

假设我有一个数组A:

A = np.arange(25).reshape((5,5))

array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

我想把它转换成这个矩阵B:

array([[24, 20, 21, 22, 23, 24, 20],
       [ 4,  0,  1,  2,  3,  4,  0],
       [ 9,  5,  6,  7,  8,  9,  5],
       [14, 10, 11, 12, 13, 14, 10],
       [19, 15, 16, 17, 18, 19, 15],
       [24, 20, 21, 22, 23, 24, 20],
       [ 4,  0,  1,  2,  3,  4,  0]])

这个想法是,如果你从A 的原始边缘走过去,你会遇到对面。即顶部的行将是底部,原始第一列的左列将是最后一列,左上角将是右下角,等等。

我目前这样做:

B = np.concatenate(([A[-1]], A, [A[0]]), axis=0).T
B = np.concatenate(([B[-1]], B, [B[0]]), axis=0).T

哪个工作看起来简单而且相对直接,我的问题是,是否有内置方法或其他聪明的方法不需要我手动获取边缘并安装它们?我不知道np.pad 能够做到这一点,但我可能错过了一些东西。

【问题讨论】:

    标签: python numpy padding


    【解决方案1】:

    我相信你正在寻找np.padmode="wrap"

    a = np.arange(25).reshape(5, 5)
    b = np.pad(a, 1, 'wrap')
    print(a)
    print(b)
    

    结果

    [[ 0  1  2  3  4]
     [ 5  6  7  8  9]
     [10 11 12 13 14]
     [15 16 17 18 19]
     [20 21 22 23 24]]
    [[24 20 21 22 23 24 20]
     [ 4  0  1  2  3  4  0]
     [ 9  5  6  7  8  9  5]
     [14 10 11 12 13 14 10]
     [19 15 16 17 18 19 15]
     [24 20 21 22 23 24 20]
     [ 4  0  1  2  3  4  0]]
    

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 2017-08-15
      • 2018-05-07
      • 1970-01-01
      • 2022-01-09
      • 2020-11-05
      • 1970-01-01
      • 2013-09-09
      相关资源
      最近更新 更多