我有两个包含 60 个 0 或 1 的数组。一种定义为
result
,另一种定义为 daysinfected
。
目标是查看
result
的每个元素,如果该元素 > 0 并且 daysinfected
元素中的相应元素为 0,则将该元素设置为 -1。
通过在这段代码之后打印
result
进行调试,很明显它没有在预期的地方(即,满足这些条件的地方)生成 -1 值。事实上,它似乎并没有修改result
中的任何内容。
for i in range(len(result)):
for i in range (len(daysinfected)):
if result[i] > 0 and daysinfected[i] == 0:
i in result == -1
你的外循环在这里是多余的,这样就足够了:
for i in range (len(daysinfected)):
if result[i] > 0 and daysinfected[i] == 0:
i in result == -1
现在,在第三行,
i in result == -1
这是一个表达式,而不是一个赋值。它的解释如下:(i in result) == -1
,其中i in result
正在检查i
是否存在于result
中。所以真的,你想要这个:
for i in range (len(daysinfected)):
if result[i] > 0 and daysinfected[i] == 0:
result[i] = -1
但是,对于 numpy 数组,您应该尽量避免在 python 中循环。一般来说,numpy 提供的实用函数几乎总是可以更快地完成任务并且更具可读性:
result = np.where((result > 0) & (daysinfected == 0), -1, result)