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 的环境中再次尝试,它返回了预期的输出。
解决方案
使用您的代码,我得到了预期的输出:
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.])
推荐阅读
- jquery - 动态的 jQuery 字段计算
- ansible - Ansible 嵌套变量正则表达式搜索
- node.js - 如何通过响应标头从 Express 后端向 React 客户端发送一些数据(可能是 json 数据)?
- max - 如何获得最近的两次相遇日期?
- postgresql - 如何从 Postgres 中的存储过程返回一个集合(多行)?
- r - 在 Microsoft Open R 中加载 Rcpp/RcppArmadillo 包时出错
- r - 如何在 ggplot 上添加辅助轴?
- jquery - 使用 jquery.nestable.js 禁用可嵌套列表的拖动
- java - 如何在java中翻转句子中的两个单词
- sql - 从 JSON 字符串中提取值会引发错误消息 T-SQL