首页 > 解决方案 > 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 的环境中再次尝试,它返回了预期的输出。

标签: pythonnumpy

解决方案


使用您的代码,我得到了预期的输出:

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

推荐阅读