计数嵌套lis中的唯一元组

2024-05-19 08:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个2D数组,其中每个元素都是一对两个标记,比如[“NOUN”,“VERB”],我想计算这些唯一对在大型数据集中出现的次数。在

到目前为止,我已经尝试使用defaultdict(int)和Counter()简单地添加元素,如果之前没有找到,或者如果找到,则将值增加1。在

dTransition = Counter()
# dTransition = defaultdict(int)

# <s> is a start of sentence tag
pairs = [[('<s>', 'NOUN')], [('CCONJ', 'NOUN')], [('NOUN', 'SCONJ')], [('SCONJ', 'NOUN')]]

for pair in pairs:
      dTransition[pairs] += 1

这不起作用,因为它不接受两个参数。因此,我想知道是否有一种简单的方法来检查字典,如果已经存在一个2D数组的键,如果已经存在,则将值增加1。在


Tags: 数据标记元素iscounter数组次数start
3条回答

考虑到与列表不同,元组是可散列的,因此需要将列表展平。一个简单的选项是使用^{},然后使用元组列表构建一个Counter

from itertools import chain
Counter(chain(*pairs))

输出

^{pr2}$

您使用defaultdict的解决方案是正确的,但是您必须将这两个值作为字典键的元组插入。在您的示例中,元组始终是列表的第一个元素:

import collections 
dTransition = collections.defaultdict(int)

# <s> is a start of sentence tag
pairs = [[('<s>', 'NOUN')], [('CCONJ', 'NOUN')], [('NOUN', 'SCONJ')], [('SCONJ', 'NOUN')],[('SCONJ', 'NOUN')]]

for pair in pairs:
      dTransition[pair[0]] += 1

那就行了

您可以使用numpy数组对已经内置的函数执行此操作。在

import numpy as np

#convert array to numpy array
pairs= np.array(pairs)

#pairs.unique() returns an array with only the unique elements
#len() returns the length(count) of unique pairs
count= len(pairs.unique())

相关问题 更多 >

    热门问题