想知道这个numpy输出背后的逻辑是什么。基本上,我试图通过切片以下代码向其自身添加一个numpy数组的子集。
x = np.zeros((10,))
x[:3] += 1
print x
x[2:] += x[:-2]
print x
原始x:
[ 1. 1. 1. 0. 0. 0. 0. 0. 0. 0.]
预期输出:
[ 1. 1. 2. 1. 1. 0. 0. 0. 0. 0.]
但是它返回了以下结果,这完全是意外的。有人知道这里的逻辑是什么吗?
实际输出:
[ 1. 1. 2. 1. 2. 1. 2. 1. 2. 1.]
编辑:问题似乎特定于numpy 1.11.3。在具有numpy 1.15.4的环境中再次尝试过,它返回了预期的输出。
答案 0 :(得分:0)
使用您的代码,我得到了预期的输出:
x = np.zeros((10,))
x[:3] += 1
x
array([1., 1., 1., 0., 0., 0., 0., 0., 0., 0.])
x[2:] += x[:-2]
x
array([1., 1., 2., 1., 1., 0., 0., 0., 0., 0.])