np.add.at理解

np.add.at理解

原文链接:https://blog.csdn.net/qq_42698422/article/details/101062718
添加了一些容易理解的注释内容
先通俗说一下,就是 在指定的位置上 加上指定的值

import numpy as np
a=np.array([1,2,3,4])
np.add.at(a,[0,1,2,2],1)
print(a)
#输出,
#参数1:a 返回结果
#参数2:[0,1,2,2] 索引
#参数 3 :1 按索引要加的值
#所以这里表示的是,在0的位置+1;在1的位置+1;在2的位置+1;在2的位置+1
[2 3 5 4]

第二个例子

a=np.array([1,2,3,4])
b=np.array([1,2])
np.add.at(a,[0,1],b) 
#从0和1的位置分别加1和2
print(a)
#输出[2 4 3 4]

第三个例子

x=([0,4,1],[3,2,4])
dW=np.zeros((5,6),int)
np.add.at(dW,x,1)
#分别在位置为第0行第3列;第4行第2列;第1行第4列的位置+1
dW
#输出
array([[0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0.]])

第四个例子

dW=np.zeros((5,6),int)
np.add.at(dW,[[[1],[2]],[2,4,4]],[1,2,3]) 
#在1,2位置+1 在1,4位置+2 在1,4位置+3     在2,1位置+1 在2,4位置+2  在2,4位置+3
dW
#输出
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 5, 0],
       [0, 0, 1, 0, 5, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])

dW=np.zeros((5,6),int)
np.add.at(dW,[[[1],[2]],[2,4,4]],[[1],[2]]) #1,2 +1; 1,4+1 1,4+1  2,2+2  2,4+2 2,4+2 
dW
#输出
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 2, 0],
       [0, 0, 2, 0, 4, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])

dW=np.zeros((5,6),int)
np.add.at(dW,[[[1],[2]],[2,4,4]],np.ones((2,3)))
#索引矩阵的和参数三的矩阵维度是一样的
#通俗的讲[[1],[2]] 索引的是np.ones的第一维度(行)  2行
#[2,4,4]索引的是np.ones的第二维度,列 3
#两个索引相结合确定的就是np.ones中的要加的值
dW
#输出
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 2, 0],
       [0, 0, 2, 0, 4, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]])
#x   shape is(N,T)
#dW    shape is(V,D)
#dout  shape is(N,T,D)
np.add.at(dW,x,dout)
#类似如下过程
for row inr range(N):
	for col in range(T):
		dW[x[row,col],:] +=dout[row,col,:]
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值