【发布时间】:2021-09-06 04:52:43
【问题描述】:
我的代码没有错误。但我有点想知道。有没有办法使用列表理解来编写我的代码?我想删除外循环(for i in range(labels))并用列表理解编写它。实际上,我面临着如何在内部和外部循环之间进行分配(current_class_p = p[y == i])的问题。
例如,y = np.array([0, 1, 1, 0, 1])、p =np.array([1, 0, 1, 0, 1]) 和此 [[1, 1],[1, 2]] 的混淆矩阵。
def confusion_matrix_version2(y, p):
labels = len(np.unique(y))
result = np.zeros((labels, labels), dtype=int)
for i in range(labels):
current_class_p = p[y == i]
result[i] = [len(current_class_p[current_class_p == j]) for j in range(labels)]
return result
【问题讨论】:
-
请将此脚本设为工作脚本。为 y 和 p 创建简单的值,并让您的示例使用这些值调用函数。这似乎与 numpy 相关,并且 numpy 数组与 python 列表完全不同。通过使其成为一个运行脚本,我们可以了解变量的类型,并可以编写答案来演示解决方案。
-
所以你想制作一个混淆矩阵,我假设是
y = true values和p = predicted_values,对吧?它必须是列表理解,还是您愿意拥有一个数组? -
我编辑了我的问题。 @罗伯特链接
-
@MD.ABUSAYED 说,我的回复为您的输入提供了您想要的输出。如果这对您有用,请将其标记为已接受的答案。如果没有,请告诉我是否还有其他可以做的事情
-
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
标签: python list list-comprehension