首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修改numpy数组中的值

修改numpy数组中的值
EN

Stack Overflow用户
提问于 2015-02-27 17:31:26
回答 2查看 155关注 0票数 1

假设ab如下所示:

代码语言:javascript
运行
复制
a = np.arange(5)
b = [0,1,2]

我想要的是,对于不包括b中的指数,a中的值应该等于-1。因此在上述情况下,a将等于

代码语言:javascript
运行
复制
a = array([0, 1, 2, -1, -1])

我知道有一种方法。

代码语言:javascript
运行
复制
a[list(set(a)-set(b))] = -1

但是需要花费太多的时间,并且在实际编写代码时会导致太多的复杂性。和往常一样,我正在寻找比上面的方法更好的方法。请随意使用所需的任何工具。另一个例子(以防万一):-如果

代码语言:javascript
运行
复制
a = np.arange(12)
b = [3,5,6]

那么我真正想要的是a = array([-1, -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, -1]) P.S.不要担心,a总是以np.arange(int)的形式存在,并且b的值不会超过a的长度

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-27 18:32:44

那么,如果对象要创建一系列与其索引相同或-1的值,那么从all -1开始并添加您想要的数据可能更简单,而不是相反。

代码语言:javascript
运行
复制
>>> a = np.full(12, -1, dtype=int)
>>> b = [3, 5, 6]
>>> a[b] = b
>>> a
array([-1, -1, -1,  3, -1,  5,  6, -1, -1, -1, -1, -1])
票数 3
EN

Stack Overflow用户

发布于 2015-02-27 17:34:46

代码语言:javascript
运行
复制
>>> a = np.arange(12)
>>> b = [3,5,6]
>>> a[~np.in1d(np.arange(len(a)), b)] = -1
>>> a
array([-1, -1, -1,  3, -1,  5,  6, -1, -1, -1, -1, -1])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28770938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档