首页 > 解决方案 > 将三个列表与概率进行比较并定义 argmax 规则

问题描述

考虑一个数据集X,它是一个len(X)x2 numpy 数组,包含平面中的点(每行是 x 和 ay 坐标),这些点已通过 3 个不同的概率分布进行采样。假设存在一个函数f,它以输入为输入X并生成 3L1,L2,L3个长度列表len(X),每行对应于一个点属于分布 1,2 或 3 的概率。

例如,我们可以有: L1[0]=0.8, L2[0]=0.1, L3[0]=0.1这意味着它X[0]属于分布 1,因为概率 0.8 是最大的并且属于L1

如何使用“广义 argmax”函数,例如创建三个列表,每个分布一个,对应于发现属于每个分布的点?

换句话说,我如何比较三个列表的L1,L2,L3每一行并使用规则将每一行(对应于数据集的每个元素X)分配给一个新列表:

如果L1[i]>L2[i] & L1[i]>L2[i]thenX[i]属于/保存到New_list1.

如果L1[i]>L2[i] & L1[i]<L3[i]那么X[i]属于/保存到New_list3

否则X[i]属于/保存到New_list2.

注意:如果我只有两个数组L1,L2,我可以执行以下操作:

arg_max = L1 > L2
New_list1, New_list2 = X[arg_max], X[~arg_max]

当然,这不适用于三个列表。我需要一个“三元”系统。

标签: pythonlistnumpy-ndarray

解决方案


推荐阅读