分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
clip
两个版本:
np.clip
作为成员函数,
x.clip
将一序列(sequence)中所有小于零的元素置零:
>>> x = np.arange(-5, 5)>>> xarray([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4])
- 1
- 2
- 3
法1,布尔索引
>>> x<0array([ True, True, True, True, True, False, False, False, False, False], dtype=bool)>>> x[x<0] = 0>>> xarray([0, 0, 0, 0, 0, 0, 1, 2, 3, 4])
- 1
- 2
- 3
- 4
- 5
法2:np.where(三目运算),不对原始序列进行修改
>>> x = np.where(x<0, 0, x)array([0, 0, 0, 0, 0, 0, 1, 2, 3, 4])
- 1
- 2
- 法3:使用clip,不对原始序列进行修改
clip的第一个参数表示目标区间最小值,第二个参数表示最大值,原始序列凡小于这个最小值的被这个最小值所替换,凡大于这个最大值的被这个最大值替换,必须指定一个参数,则另一个参数默认为的情况,在进行相加时会破坏整个内积运算的结果。
>>> 0*np.nan_to_num(np.log(0))0.0
- 1
- 2
我们或者:
def fn(a, y): return -(np.dot(y.transpose(), np.nan_to_num(np.log(a)))+np.dot((1-y).transpose(), np.nan_to_num(np.log(1-a))))
- 1
- 2
或者:
def fn(a, y): return -np.sum(np.nan_to_num(y*np.log(a)+(1-y)*np.log(1-a)))
- 1
- 2
np.cumsum()
np.cumsum(a)函数返回一个多维数组,其shape等于a的shape
p = np.random.random(100000)rolls = np.random.random((11, len(p)))Alice_wins = np.cumsum(rolls < p, 0) # 0,表示列向Bob_wins = np.cumsum(rolls >= p, 0) # 0,表示列向
- 1
- 2
- 3
- 4
- 5
- 6
首先需要说明的是,np.array() < 0
,返回的是bool
元素类型的多维数组。也即上述代码中的rolls < p
,也即np.cumsum()
的第一个参数为多维元组类型。np.cumsum(rolls < p, 0)
,第二个参数0
表示在列的方向进行累积相加。