我有一个满是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]希望这是足够清楚,如果不是只是让我知道。
谢谢。
发布于 2017-04-26 19:13:01
你可以用一个成对的列表来保持这些位置;
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])发布于 2017-04-26 19:07:44
下面是一种方法,方法是将这些索引生成为与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])https://stackoverflow.com/questions/43642541
复制相似问题