python - 用 1 替换 numpy 数组中的多个元素
问题描述
在给定的 numpy 数组中X
:
X = array([1,2,3,4,5,6,7,8,9,10])
我想分别替换索引(2, 3)
和(7, 8)
单个元素-1
,例如:
X = array([1,2,-1,5,6,7,-1,10])
换句话说,我用奇异值替换了索引(2, 3)
和(7,8)
原始数组的值。
问题是:是否有一种 numpy-ish 方式(即没有 for 循环和使用 python 列表)?谢谢。
注意:这不等同于用另一个元素就地替换单个元素。它是关于用“单一”值替换多个值。谢谢。
解决方案
使用 的解决方案numpy.delete
,类似于@pault,但更有效,因为它使用纯 numpy 索引。但是,由于这种高效的索引,这意味着您不能将锯齿状数组作为索引传递
设置
a = np.array([1,2,3,4,5,6,7,8,9,10])
idx = np.stack([[2, 3], [7, 8]])
a[idx] = -1
np.delete(a, idx[:, 1:])
array([ 1, 2, -1, 5, 6, 7, -1, 10])
推荐阅读
- c# - 在 .net core clobbers SQL Server 数据库中以逐字字符串 (@) 运行原始选择查询
- python - 使用 keras 保存模型
- javascript - 创建来自外国的服务人员
- sql - 从重叠的日期范围创建新的日期范围并分配一个 ID
- java - 如何检查音乐何时结束
- typescript - 为什么打字稿认为我的财产在我抛出一个承诺捕获块后可能是无效的?
- carousel - 更改 v-carousel 分隔符的背景
- javascript - 页面加载后在不同 div 中加载 PHP 文件并使用 JQuery 刷新它们的问题
- ios - 有没有办法在环境光变化时获得通知?
- selenium - 在搜索/过滤输入字段上使用 send_keys() 不会过滤表中的结果