我有一个np数组
[1, 1, 1, 1, 0, 1, 0, 1, 0]
现在我想修改索引I s.t处的数字,如果前面的n个元素中有一个是1,那么它就是0。但是这个计算不应该是静态的w.r.t到原始数组,而是动态的,即考虑已经改变的值。假设n=2,那么我想得到
^{pr2}$在没有for循环的情况下,如何高效地完成这项工作? 简单索引将在一次迭代中遍历整个数组,忽略新更改的值,这意味着结果将是
^{3}$对吧?在
更新: 在循环中我会这样做:
for i in range(a.shape[0]):
FoundPrevious = False
for j in range(n):
if i - j < 0:
continue
if a[i - j] == 1:
FoundPrevious = True
break
if FoundPrevious:
a[i] = 0
问题本质上是迭代的,但是您可以通过对列表进行一次遍历来简化事情。在
^{pr2}$正如其他回答者和评论者所指出的,问题的内在互动性使得没有for循环的解决方案变得不明显。在
简化此问题的另一种方法是:
相关问题 更多 >
编程相关推荐