Python - 统计每行/列出现的值的数量

3

假设我有一个字符串的二维数组,如下所示:

A = [['a', 'b', 'b'],
     ['c', 'c', 'a'],
     ['d', 'c', 'a']]

我想要找出给定元素在多少行中出现,以便得到以下输出:

In [1]: get_number_rows('a')
Out[1]: 3

In [2]: get_number_rows('b')
Out[2]: 1

In [1]: get_number_rows('c')
Out[1]: 2

In [2]: get_number_rows('d')
Out[2]: 1

请注意,我不想要“a”的出现次数,而是它出现的行数。
我已经尝试循环遍历行并简单计数,但我处理的数据集非常大(1000s x 1000s),所以速度非常慢。如有更快的解决方案,请告诉我。
3个回答

1
您可以使用以下get_number_rows()方法来对包含该字符的数组进行求和:
A = [['a', 'b', 'b'],
     ['c', 'c', 'a'],
     ['d', 'c', 'a']]

def get_number_rows(char):
    return len([x for x in A if char in x])

get_number_rows('a')
>> 3

get_number_rows('b')
>> 1

get_number_rows('c')
>> 2

get_number_rows('d')
>> 1

1
对于行,请尝试类似以下的内容。
len([x for x in A if 'a' in x])

这个列表推导式创建了一个列表,其中包含满足条件 'a' in x 的所有列表 x。然后你可以取该列表的长度来得到它们的总数。

1
谢谢,我在列表推导方面仍有些困难! - Hannah

0
if __name__ == "__main__":
    A = [['a', 'b', 'b'],
         ['c', 'c', 'a'],
         ['d', 'c', 'a']]

    def get_number_rows(A, desired_element):
        """
        Pass in two dimensional array, A as first parameter
        Pass in desired char element, desired_element as 2nd parameter.
        Function will return number of occurrences of desired_element in A.
        """

        element_count = 0  # Int to keep track of occurrences
        for group in A:  # For nested array in A
            if desired_element in group:  # If our desired element is in the sub array
                element_count += 1  # Increment our counter
        return element_count  # After completion, return the counter

    print(get_number_rows(A, 'a'))

    print(get_number_rows(A, 'b'))

    print(get_number_rows(A, 'c'))

    print(get_number_rows(A, 'd'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接