python - numpy.pad 添加的填充是声明的两倍
问题描述
我正在尝试填充 2d numpy 数组以使其成为我正在处理的图像的大小,但该np.pad
函数填充了我请求的填充的两倍:
import numpy as np
gaussian = [
[0.003, 0.013, 0.022, 0.013, 0.003],
[0.013, 0.059, 0.097, 0.059, 0.013],
[0.022, 0.097, 0.159, 0.097, 0.022],
[0.013, 0.059, 0.097, 0.059, 0.013],
[0.003, 0.013, 0.022, 0.013, 0.003]
]
gaussian = np.pad(gaussian, ((2, 2), (2, 2)), 'constant')
上面的代码应该理想地输出一个(7, 7)
数组(至少这是我所期望的),但我得到的输出是一个(9, 9)
二维数组。
解决方案
您的代码的行为与文档所述完全一样。特别是,第二个参数读取:
pad_width : {sequence, array_like, int}
填充到每个轴边缘的值的数量。((before_1, after_1), ... (before_N, after_N)) 每个轴的唯一焊盘宽度。((before, after),) 在每个轴的 pad 之前和之后产生相同的结果。(pad,) 或 int 是 before = after = 所有轴的焊盘宽度的快捷方式。
因此,您要求在数组的每一侧在每个维度上添加两个额外的元素((2, 2), (2, 2))
。正如预期的那样,2 + 5 + 2 = 9。
有效选项的示例pad_width
将导致 7x7 输出数组是
1
(1,)
((0, 2),)
((2, 0), (1, 1))
如果您希望填充是对称的,您可能需要前两个中的任何一个。
推荐阅读
- mysql - Mysql选择总和等于的行
- html - Swift Regex 从页面 html 中检索令牌
- python - 获取变量 x 不是列表索引,而是列表中的实际值
- java - Java中的这个乘法有什么问题:27984 * 619246?
- spring-boot - 如何在春季测试中使用 liquibase 解决“已经有太多客户”的问题?
- angular - 我可以在每次加载组件时解析服务吗?一次在没有双重请求的情况下一起加载模块时可以解析服务吗?
- woocommerce - woocommerce api 创建订单设置行项目价格
- android - 将项目迁移到 Java 8 是否存在任何不兼容问题?
- angular - 无法使用 FileTransfer 将文件上传到服务器
- razor - 您如何订购@HTML.EditorFor 电话?