python - 沿轴的零垫阵列

标签 python arrays numpy

我要垫:

[[1, 2]
 [3, 4]]

[[0, 0, 0]
 [0, 1, 2]
 [0, 3, 4]]

当 vstack 和 hsrack 的输入是 2D 时,我这样做没问题

但是,当我加1个dim来表示数字的dim时,比如:

img = np.random.randint(-10, 10, size=(2, 2, 2))

如果我不想使用 for 循环,我就不能这样做。 有什么方法可以避免 for 但只有 numpy 的堆栈才能做到吗?

ps:对于这个例子,我应该得到 (2,3,3) 数组,每个 2 img 实例在第 1 列和第 1 行用零填充。

谢谢

最佳答案

您可以使用 np.pad ,它允许您指定填充到每个轴边缘的值的数量。

因此对于第一个示例 2D 数组,您可以这样做:

a = np.array([[1, 2],[3, 4]])
np.pad(a,((1, 0), (1, 0)), mode = 'constant')

array([[0, 0, 0],
       [0, 1, 2],
       [0, 3, 4]])

因此,这里每个元组代表沿每个轴用零填充的边,即 ((before_1, after_1), … (before_N, after_N))


对于 3D 数组同样适用,但在这种情况下我们必须指定我们只想填充最后两个维度:

img = np.random.randint(-10, 10, size=(2, 2, 2))
np.pad(img, ((0,0), (1,0), (1,0)), 'constant')

array([[[ 0,  0,  0],
        [ 0, -3, -2],
        [ 0,  9, -5]],

       [[ 0,  0,  0],
        [ 0,  1, -9],
        [ 0, -1, -3]]])

关于python - 沿轴的零垫阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56076094/

相关文章:

javascript - 从数组向对象添加值,并且当数组用完时不会变得未定义

python - Numpy 形状相同,均值返回不同的形状

python - 如何访问python列表列表中的列

python - KMeans 并行处理失败

python - Cython 抛出语法错误

python - 如何从 PySpark 中的字符串获取列表

python - 牛顿-拉夫森不起作用 - future 值(value)年金到期公式

javascript - 如何在javascript中访问json中的嵌套数组

python - 如何在机器学习模型中使用 train.csv 、 test.csv 和 ground_truth.csv ? (交叉验证/Python)

python - 使用 np.where 匹配 pandas 单元格中的值,其中值是数组(ValueError : Arrays were different lengths)