从格式如下的数据开始:
data = [[0,1],[2,3],[0,1],[0,2]]
我想用它的频率来表示每个值:
output = [[[0,1],2],[[2,3],1],[[0,2],1]]
对于 1D 列表,我找到了许多解决此问题的方法,但它们似乎不适用于 2D。
从格式如下的数据开始:
data = [[0,1],[2,3],[0,1],[0,2]]
我想用它的频率来表示每个值:
output = [[[0,1],2],[[2,3],1],[[0,2],1]]
对于 1D 列表,我找到了许多解决此问题的方法,但它们似乎不适用于 2D。
这collections.Counter()
是为了:
>>> from collections import Counter
>>>
>>> Counter(map(tuple,data))
Counter({(0, 1): 2, (2, 3): 1, (0, 2): 1})
>>> Counter(map(tuple,data)).items()
[((0, 1), 2), ((2, 3), 1), ((0, 2), 1)]
请注意,由于列表对象不可散列,因此您不能将它们用作字典键。因此您需要将它们转换为可散列对象的元组。