首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy中的Pad函数

Numpy中的Pad函数
EN

Stack Overflow用户
提问于 2020-12-11 04:10:17
回答 1查看 186关注 0票数 0

我正在使用np.pad来填充4d数组

代码语言:javascript
复制
a = np.zeros((2,2,2,2))
a = a+7
apad = np.pad(a,((0,0),(0,0),(1,1),(1,1)),'constant')

它用零号行和列来填充每个2d数组,我不知道这个np.pad是如何工作的,特别是函数的第二个参数,我也尝试用简单的数组来理解它,这一点也不清楚。

代码语言:javascript
复制
a = np.arange(20)
a = np.reshape(a,(4,5))
a = np.pad(a,((1,0)),'constant')
print(a)

>>>[[ 0  0  0  0  0  0]
    [ 0  0  1  2  3  4]
    [ 0  5  6  7  8  9]
    [ 0 10 11 12 13 14]
    [ 0 15 16 17 18 19]]

有人能简要解释一下np.pad()中第二个参数是如何工作的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-11 14:59:04

让我们从第二个示例(一个二维数组)开始。

当您运行np.pad(a, (1,0), 'constant')时(1,0)意味着:

  • 添加1个元素之前,
  • 添加元素后,
  • ,因为您只放置一个(前,后)对,它涉及每个维度。

结果是:

在数组之前添加

  • 1 ,在数组之后不添加任何内容(对于第一个维度),在数组之前添加
  • 1 ,在(第二维度)之后不添加任何元素,默认情况下,H 120添加的元素,H 221F 222

因此,结果是:

代码语言:javascript
复制
array([[ 0,  0,  0,  0,  0,  0],
       [ 0,  0,  1,  2,  3,  4],
       [ 0,  5,  6,  7,  8,  9],
       [ 0, 10, 11, 12, 13, 14],
       [ 0, 15, 16, 17, 18, 19]])

​,现在看第一个例子。让我们创建也是int类型的数组:

代码语言:javascript
复制
a = np.zeros((2,2,2,2), dtype=int)
a = a + 7

然后,当您运行apad = np.pad(a, ((0,0),(0,0),(1,1),(1,1)), 'constant')时:

在第1和第2维(前2对(0,0))中没有添加

  • ,在第3和第4维1元素中添加了
  • (在(1,1)之后添加了2对)。

结果是:

代码语言:javascript
复制
array([[[[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]],

        [[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]]],


       [[[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]],

        [[0, 0, 0, 0],
         [0, 7, 7, 0],
         [0, 7, 7, 0],
         [0, 0, 0, 0]]]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65245683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档