【发布时间】:2019-05-13 06:28:11
【问题描述】:
我有两个元素列表
a = [1,2,3,2,3,1,1,1,1,1]
b = [3,1,2,1,2,3,3,3,3,3]
我正在尝试将元素从 a 唯一匹配到 b,我的预期结果是这样的:
1: 3
2: 1
3: 2
于是我尝试构造一个赋值矩阵,然后使用scipy.linear_sum_assignment
a = [1,2,3,2,3,1,1,1,1,1]
b = [3,1,2,1,2,3,3,3,3,3]
total_true = np.unique(a)
total_pred = np.unique(b)
matrix = np.zeros(shape=(len(total_pred),
len(total_true)
)
)
for n, i in enumerate(total_true):
for m, j in enumerate(total_pred):
matrix[n, m] = sum(1 for item in b if item==(i))
我希望矩阵是:
1 2 3
1 0 2 0
2 0 0 2
3 6 0 0
但是输出是:
[[2. 2. 2.]
[2. 2. 2.]
[6. 6. 6.]]
我在这里犯了什么错误?非常感谢
【问题讨论】:
标签: python matrix variable-assignment