解密NumPy求解梯度的一个关键难点

本文详细解析了NumPy的gradient方法中,当edge_order参数为2时,如何处理边界值的问题。通过实例分析,揭示了边缘梯度的计算方法,包括左边界为2倍的edge_order=1时的第一个梯度值减去第二个梯度值,右边界则是2倍的最后一个梯度值减去倒数第二个梯度值。对于理解NumPy的梯度计算具有指导意义。
摘要由CSDN通过智能技术生成

关于numpy的gradient方法,在参数edge_order等于2时,如何得到左右两个边界值,是比较难理解的地方,而网上的博文几乎都千篇一律,都没有对此做出正确的解释。

而关注我的老粉「高新区运气王」经过深思熟虑,找出规律,总结出edge_order等于2时左右两个边界值的推导,难能可贵!在此以飨关注我的读者。

1 Numpy求梯度

import numpy as np
x = np.random.randint(10, size=(6, ))
f = x**2
print(f"f:{f}")
# >> 0, 1, 4, 9, 16

grad1 = np.gradient(f)
print(f"不设置edge_order时, f的默认梯度:{grad1}")

grad2 = np.gradient(f, edge_order=1)
print(f"edge_order=1时,f的梯度:{grad2}")

print(f"查看f的默认梯度是否和edge_order=1时的梯度值相等:{(grad1==grad2).all()}")

grad3 = np.gradient(f, edge_order=2)
print(f"edge_order=2时, f的梯度:{grad3}")

输出结果如下:

f:[49 36 36 9 4 49]
不设置edge_order时, f的默认梯度:[-13. -6.5 -13.5 -16.  20.  45. ]
edge_order=1时,f的梯度:[-13. -6
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值