import numpy as np a = np.array([1,2,3,np.nan]) a[np.isnan(a) ]=0 def gd(x_start,step,g): """ param x_start:初始化数据点 param step:梯度下降的步长 param g:梯度函数 return :迭代终止的点 """ x = x_start for i in range(200): grad = g(x) x -= grad*step print("epoch{0},grad={1},x={2}".format(i,grad,x)) if abs(grad)<1e-6: break return x def f(x): """ 需要优化的目标函数 """ return x**2 - 2*x + 1 def g(x): """ 目标函数的梯度函数 """ return 2*x gd(5,0.1,g)