x = np.zeros(10)
x[[0,0]] = [4,6]
i = [3,3]
x[i] +=1
x # array([6., 0., 0., 1., 0., 0., 0., 0., 0., 0.])
x[[0,0]] = [4,6] 的结果是 x[0]为6
而x[i] +=1 的结果 x[3]为1,为何没有累加?
x = np.zeros(10)
x[[0,0]] = [4,6]
i = [3,3]
x[i] +=1
x # array([6., 0., 0., 1., 0., 0., 0., 0., 0., 0.])
x[[0,0]] = [4,6] 的结果是 x[0]为6
而x[i] +=1 的结果 x[3]为1,为何没有累加?
你估计认为
x[[3,3]]+=1
等价
x[3]=x[3]+1
x[3]=x[3]+1
但是其实是
x[3]=x[3]的原始值+1,同时x[3]=x[3]的原始值+1
好比
a,b=b,a
是a=b的同时,b=a,也就是交换ab,而不是a=b,b=a(也就是原来的b),b不变
自己理解下
a = 1
b = 2
a,b=b,a
print("a="+str(a) + ",b=" + str(b))
a=2,b=1
a = 1
b = 2
a,a=a,b
print("a="+str(a) + ",b=" + str(b))
a=2,b=2
最后看这个
a = 1
a,a=a+1,a+1
print("a="+str(a))
a=2
结果是2不是3
自己领悟下吧,这就是语法这么规定的。