numpy--pad函数的常用方法

参数解释

ndarray = numpy.pad(array, pad_width, mode, **kwargs)
  • array为要填补的数组

  • pad_width是在各维度的各个方向上想要填补的长度,如((1,2),(2,2)),表示在第一个维度上水平方向上padding=1,垂直方向上padding=2,在第二个维度上水平方向上padding=2,垂直方向上padding=2。如果直接输入一个整数,则说明各个维度和各个方向所填补的长度都一样。

  • mode为填补类型,即怎样去填补,有“constant”,“edge”等模式,如果为constant模式,就得指定填补的值,如果不指定,则默认填充0。

  • 剩下的都是一些可选参数,具体可查看
    https://docs.scipy.org/doc/numpy/reference/generated/numpy.pad.html

  • ndarray为填充好的返回值。

例子

对一维数组填充

import numpy as np
array = np.array([1, 1, 1])

# (1,2)表示在一维数组array前面填充1位,最后面填充2位
#  constant_values=(0,2) 表示前面填充0,后面填充2
ndarray=np.pad(array,(1,2),'constant', constant_values=(0,2)) 

print("array",array)
print("ndarray=",ndarray)
array [1 1 1]
ndarray= [0 1 1 1 2 2]

对二维数组填充

import numpy as np
array = np.array([[1, 1],[2,2]])

"""
((1,1),(2,2))表示在二维数组array第一维(此处便是行)前面填充1行,最后面填充1行;
                 在二维数组array第二维(此处便是列)前面填充2列,最后面填充2列
constant_values=(0,3) 表示在各个维度填充时第一次填充0,第二次填充3
"""
ndarray=np.pad(array,((1,1),(2,2)),'constant', constant_values=(0,3)) 

print("array",array)
print("ndarray=",ndarray)
array [[1 1]
       [2 2]]

[[0 0]
 [1 1]
 [1 1]
 [3 3]]
 
 [[0 0 0 0]
 [0 0 1 1]
 [0 0 2 2]
 [0 0 3 3]]

[[0 0 0 0 3 3]
 [0 0 1 1 3 3]
 [0 0 2 2 3 3]
 [0 0 3 3 3 3]]
 

ndarray= [[0, 0, 0, 0, 3, 3],
          [0, 0, 1, 1, 3, 3],
          [0, 0, 2, 2, 3, 3],
          [0, 0, 3, 3, 3, 3]]

参考

https://www.cnblogs.com/hezhiyao/p/8177541.html

你遇到的错误: ``` SyntaxError: invalid syntax conda remove numpy --force ^ ``` 是因为你 **在 Jupyter Notebook 或 Python 解释器中直接运行了 shell 命令**,而 `conda` 是一个 **命令行工具(CLI)**,不能在 Python 内部直接执行。 --- ## ✅ 正确做法:必须在“系统命令行”或“ArcGIS Pro Python Command Prompt”中运行 `conda` 命令 ### 🔍 错误原因详解 当你在 Jupyter Notebook 中写: ```python conda remove numpy --force ``` Python 会把它当作 Python 代码解析,但 `conda` 不是 Python 函数,所以报语法错误。就像你不能在 `.py` 文件里直接写 `pip install xxx` 一样。 --- ## ✅ 正确操作步骤(修复 NumPy 版本问题) ### ✅ 第一步:打开 ArcGIS Pro 的专用命令行工具 1. 打开 **ArcGIS Pro** 2. 点击顶部菜单栏: - `Analysis` → `Python` → `Python Command Prompt` 3. 会弹出一个黑色终端窗口(即 **ArcGIS Python 命令行环境**) > 这个终端已经激活了 `arcgispro-py3` 环境,你可以安全运行 `conda` 和 `pip` 命令。 --- ### ✅ 第二步:在该终端中输入以下命令 ```bash # 1. 卸载不兼容的 NumPy(可能是通过 pip 安装的 v2.x) conda remove numpy --force # 2. 清理可能残留的用户级包(防止冲突) pip uninstall numpy -y # 3. 删除用户目录下的缓存包(重要!) # 手动删除以下文件夹(如果存在): # C:\Users\ywy\AppData\Roaming\Python\Python311\site-packages\numpy # (关闭所有 Python 进程后删除) # 4. 重新安装稳定版 NumPy(使用 conda,不要用 pip) conda install numpy=1.24.3 # 5. 安装其他依赖库(确保兼容) conda install scipy matplotlib opencv-python pywavelets rasterio ``` > ⚠️ 注意:一定要用 `conda install` 而不是 `pip install`,因为 ArcGIS Pro 对二进制 ABI 兼容性要求极高。 --- ### ✅ 第三步:验证是否修复成功 回到你的 Jupyter Notebook 或 Python 脚本,运行: ```python import numpy as np from scipy.ndimage import uniform_filter print("✅ NumPy 版本:", np.__version__) print("✅ NumPy 路径:", np.__file__) # 测试一个简单滤波 data = np.random.rand(10, 10) filtered = uniform_filter(data, size=3) print("✅ scipy.ndimage.uniform_filter 工作正常") ``` 预期输出: ``` ✅ NumPy 版本: 1.24.3 ✅ NumPy 路径: D:\ArcGISPro\bin\Python\envs\arcgispro-py3\Lib\site-packages\numpy\__init__.py ✅ scipy.ndimage.uniform_filter 工作正常 ``` --- ## ✅ 替代方案:如果你无法使用命令行 ### 方案 A:使用 `subprocess` 在 Python 中调用命令行(仅限管理员权限) ```python import subprocess import sys # 尝试在外部 shell 中运行 conda 命令 try: result = subprocess.run([ 'conda', 'install', 'numpy=1.24.3', '-y' ], check=True, capture_output=True, text=True) print("✅ 安装成功") except subprocess.CalledProcessError as e: print("❌ 安装失败:", e.stderr) ``` > ⚠️ 但这要求: > - `conda` 在系统 PATH 中 > - 以管理员身份运行 > - 不推荐用于生产环境 --- ### 方案 B:完全绕过 `scipy.ndimage`(临时应急) 如果你暂时无法修改环境,可以用纯 NumPy 实现均值滤波来替代 `uniform_filter`: ```python def simple_uniform_filter(arr, size=3): """3x3 均值滤波,替代 scipy.ndimage.uniform_filter""" if size % 2 == 0: raise ValueError("size 必须为奇数") pad = size // 2 padded = np.pad(arr, pad_width=pad, mode='reflect') filtered = np.zeros_like(arr) for i in range(arr.shape[0]): for j in range(arr.shape[1]): filtered[i, j] = np.mean(padded[i:i+size, j:j+size]) return filtered ``` 然后替换原代码中的部分: ```python # 原始代码: # from scipy.ndimage import uniform_filter # repaired = uniform_filter(...) # 改成: repaired = simple_uniform_filter(arr_clean * valid_mask + (~valid_mask) * 0, size=3) ``` ⚠️ 注意:性能较差,仅适用于小图像测试。 --- ## ✅ 总结 | 问题 | 解决方法 | |------|----------| | `conda: invalid syntax` | 不能在 Python 中直接写 `conda xxx`,必须在命令行运行 | | `numpy.core.multiarray failed to import` | 因为安装了 NumPy 2.x,需降级到 1.24.3 | | 如何正确安装 | 使用 **ArcGIS Pro Python Command Prompt** + `conda install numpy=1.24.3` | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值