我有一个充满0的numpy数组,比如这个
[0,0,0,0,0,0,0,0,0,0,0,0]
以及此类职位列表
[2-4,6-10]
所以我想要做的是遍历位置列表,然后将numpy数组中的0更改为相应位置内的1,这样我就应该有一个numpy数组,如。
[0,1,1,1,0,1,1,1,1,1,0,0,0]
希望这很清楚,如果不是让我知道的话。
感谢。
答案 0 :(得分:5)
以下一种方法是将这些索引生成为np.r_
的连续数组,然后编制索引并分配1s
-
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])
答案 1 :(得分:1)
您可以使用对子列表来保存位置;
l = [(2, 4), (6, 10)]
nl = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
其次,使用循环;
for a in l:
for c, n in enumerate(nl)
if (a[0] >= c || a[1] <= c):
nl[c] = 1
到目前为止,这不是最快的方法,但它简单易读。
根据this user的建议,你可以改用它,这在我看来要好得多;
nl[a[0]:[a[1]]=[1]*(a[1]-a[0])