如何根据其他数组中相同索引元素的条件更改一个数组中的元素?

问题描述 投票:0回答:1

我有两个包含 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
python numpy
1个回答
0
投票

你的外循环在这里是多余的,这样就足够了:

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)
© www.soinside.com 2019 - 2024. All rights reserved.