【问题标题】:Padding using Numpy in Python在 Python 中使用 Numpy 进行填充
【发布时间】:2020-01-26 05:29:36
【问题描述】:

采用一个 3 维数组。从结束位置填充实例,如下例所示。也就是说,我需要填充沿数组边缘值镜像的话语的反射。

数组a:

array ([array([[3, 1, 4, 1],
   [5, 9, 2, 6],
   [5, 3, 5, 8]]),
   array([[9, 7, 9, 3],
   [2, 3, 8, 4]]),
   array([[6, 2, 6, 4],
   [3, 3, 8, 3],
   [2, 7, 9, 5],
   [0, 2, 8, 8]])], dtype=object)

dim1 = a.shape[0]    # n
dim2 = max([i.shape[0] for i in a]) # m
dim3 = a[0].shape[1] # k

填充后最终矩阵的维度:

结果 = np.zeros((dim1, dim2, dim3))

输出:

      [[[3. 1. 4. 1.]
        [5. 9. 2. 6.]
        [5. 3. 5. 8.]
       [5. 3. 5. 8.]]
      [[9. 7. 9. 3.]
       [2. 3. 8. 4.]
       [2. 3. 8. 4.]
       [9. 7. 9. 3.]]

      [[6. 2. 6. 4.]
       [3. 3. 8. 3.]
       [2. 7. 9. 5.]
       [0. 2. 8. 8.]]]

如何使用 numpy.pad 获得输出?

【问题讨论】:

    标签: numpy padding


    【解决方案1】:

    诀窍是使用pad_width 参数,并在每个维度上填充特定数量的行。在这种情况下,pad_width 的形状应该是 (2,2)。

    for b in a:
        extra_lines = dim2 - b.shape[0]
        c = np.pad(b, pad_width=[[0, extra_lines], [0, 0]], mode='symmetric')
        print(c, '\n')
    
    [[3 1 4 1]
     [5 9 2 6]
     [5 3 5 8]
     [5 3 5 8]] 
    
    [[9 7 9 3]
     [2 3 8 4]
     [2 3 8 4]
     [9 7 9 3]] 
    
    [[6 2 6 4]
     [3 3 8 3]
     [2 7 9 5]
     [0 2 8 8]] 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-16
      • 2017-01-03
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      相关资源
      最近更新 更多