【发布时间】:2020-01-11 21:40:00
【问题描述】:
我正在运行一个带有 If 语句的 For 循环,其中包括两个布尔数组来创建一个新数组。
我已经尝试了在 StackOverflow 上可以找到的所有解决方案,将 & 与 Logical_and 或 bitwise_and 交换,同时使用建议的 a.any() 和 a.all() 方法,我仍然得到相同的 ValueError。
y_valid = [True, False, True, False, False, True]
y_pred = [False, False, True, True, False, False]
for i in (y_valid, y_pred):
CM = []
if (y_valid[i] == False) & (y_pred[i] == False):
CM == 0
elif (y_valid[i] == False) & (y_pred[i] == True):
CM == 1
elif (y_valid[i] == True) & (y_pred[i] == False):
CM == 2
elif (y_valid[i] == True) & (y_pred[i] == True):
CM == 3
我希望得到一个包含 0-3 数字的数组 CM
我的输出:
ValueError Traceback (most recent call last)
<ipython-input-107-259ac7895185> in <module>
1 for i in (y_valid, y_pred):
2 CM = []
----> 3 if (y_valid[i] == False) & (y_pred[i] == False):
4 CM == 0
5 elif (y_valid[i] == False) & (y_pred[i] == True):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
【问题讨论】:
-
我认为上面的代码存在一些问题:(1)for循环
i- 它的预期值是多少?据我所知,i是一个列表! (2)CM == 3:你的意思是CM.append(3)还是CM = 3? (3) Python bool 比较并不是真正必要的(if y_value[i] and not y_pred[i])应该可以工作,最后 (4) 你的意思是and而不是&? -
对不起,我是新手。我真的不知道 CM == 3 或 CM.append(3) 之间的区别。我想将整数值分配给给 if 语句的 CM 数组。我尝试了带有 append 的代码并且它有效,但我只收到了 CM 中的一个值,而不是与 y_valid 和 y_pred 相同的长度。
-
不用担心@Changer,我们都从某个地方开始:)。根据您的评论,我发布了一个答案,它将在 CM 中返回一个数组/列表。解释了我在 cmets 中的变化
标签: python for-loop if-statement valueerror