首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个位置之间更改numpy数组的值

如何在两个位置之间更改numpy数组的值
EN

Stack Overflow用户
提问于 2017-04-26 19:04:04
回答 2查看 905关注 0票数 0

我有一个满是0的numpy数组,如下所示

代码语言:javascript
复制
   [0,0,0,0,0,0,0,0,0,0,0,0]

以及像这样的职位列表

代码语言:javascript
复制
   [2-4,6-10] 

因此,我要做的是遍历位置列表,然后将numpy数组中的0更改为相应位置中的1,这样我就应该有一个numpy数组,例如。

代码语言:javascript
复制
  [0,1,1,1,0,1,1,1,1,1,0,0,0]

希望这是足够清楚,如果不是只是让我知道。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-26 19:13:01

你可以用一个成对的列表来保持这些位置;

代码语言:javascript
复制
l = [(2, 4), (6, 10)]
nl = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

第二,使用循环;

代码语言:javascript
复制
for a in l:
  for c, n in enumerate(nl) 
    if (a[0] >= c || a[1] <= c):
       nl[c] = 1

到目前为止,这并不是最快的方法,但它是简单和可读的。

正如this user所建议的,你可以用这个代替,这在我看来要好得多;

代码语言:javascript
复制
nl[a[0]:[a[1]]=[1]*(a[1]-a[0])
票数 1
EN

Stack Overflow用户

发布于 2017-04-26 19:07:44

下面是一种方法,方法是将这些索引生成为与np.r_连接的数组,然后索引和分配1s -

代码语言:javascript
复制
In [64]: a = np.array([0,0,0,0,0,0,0,0,0,0,0,0])

In [65]: pos = np.r_[1:4,5:10]

In [66]: a[pos] = 1

In [67]: a
Out[67]: array([0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0])
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43642541

复制
相关文章

相似问题

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