【问题标题】:Padding n rows and m columns of 0s to the each side of numpy array将 n 行和 m 列的 0 填充到 numpy 数组的每一侧
【发布时间】:2021-04-10 15:32:23
【问题描述】:

问题来了

给定一个大小为 n×m 的 2D numpy 数组“a”。您需要填充矩阵 用 0 使矩阵的维数变为 (n+2n1)×(m+2m1)

a = np.array([[1, 1], [1, 1]])
n1 = 1
m1 = 2
print(padding(a, n1, m1))
>>[[0, 0, 0, 0, 0, 0], 
  [0, 0, 1, 1, 0, 0],
  [0, 0, 1, 1, 0, 0],
  [0, 0, 0, 0, 0, 0]]

我想用 pad() 函数解决这个问题,但问题出在这里

import numpy as np

def padding(a, n1, m1):
    return np.pad(a, [n1, m1], constant_values=0)
a = np.array([[1, 1], [1, 1]])
n1 = 1
m1 = 2
print(padding(a, n1, m1))

结果是

[[0 0 0 0 0]
  [0 1 1 0 0]
  [0 1 1 0 0]
  [0 0 0 0 0]
  [0 0 0 0 0]]

【问题讨论】:

  • 仔细阅读np.pad 文档。您可以指定 4 个填充值!

标签: python arrays numpy matrix


【解决方案1】:

运行:

result = np.pad(a, [(n1, n1), (m1, m1)])

第二个参数(pad_width)是一个二元组列表(beforeafter) 每个轴。

用零填充是默认模式,所以你不需要指定它。

结果是:

array([[0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 0, 0],
       [0, 0, 1, 1, 0, 0],
       [0, 0, 0, 0, 0, 0]])

更简洁的版本是:

np.pad(a, [(n1,), (m1,)])

【讨论】:

    猜你喜欢
    • 2020-03-28
    • 2019-03-30
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多