给定一个 2D Numpy 数组,我希望能够将其填充到左侧、右侧、顶部、底部,如下面的伪代码所示。Numpy 中已经内置了类似的东西吗?
import numpy as np
a = np.arange(16).reshape((4, 4))
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]]
pad(a)[-4:2, -1:3] # or any syntax giving the same result
#[[0 0 0 0]
# [0 0 0 0]
# [0 0 0 0]
# [0 0 0 0]
# [0 0 1 2]
# [0 4 5 6]]
pad(a)[-4:2, -1:6]
#[[0 0 0 0 0 0 0]
# [0 0 0 0 0 0 0]
# [0 0 0 0 0 0 0]
# [0 0 0 0 0 0 0]
# [0 0 1 2 3 0 0]
# [0 4 5 6 7 0 0]]
一些诡计:
测试:
您可以定义一个正确大小的零数组,然后从数组中复制切片:
AFAIK 无法像
pad(a, -4:2, -1:6)
索引操作之外那样使用切片语法,但此函数允许您将切片指定为元组,我认为这与您所需的语法足够接近您不能为此使用切片,负数在切片中具有不同的含义。
你必须使用
pad
:使用函数的通用方法: