numpy:将子数组添加到自身的输出

时间:2019-01-16 11:46:59

标签: python numpy

想知道这个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的环境中再次尝试过,它返回了预期的输出。

1 个答案:

答案 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.])