如何计算元素在数组中特定位置出现的次数? [关闭]

Posted

技术标签:

【中文标题】如何计算元素在数组中特定位置出现的次数? [关闭]【英文标题】:How can I count the number of times an element occurs in a specific position in an array? [closed] 【发布时间】:2017-05-01 02:23:08 【问题描述】:

我有大量的 0 和 1 数组,就像这样 - 每个数组的数组长度为 812。

    a = [1, 0, 0, 1, 0,....]
    b = [0, 1, 0, 0, 1,....]
    .
    .
    .
    x = [0, 1, 0,..........]

我想做的是计算 1 和 0 出现在第一个、第二个、...第 812 个位置的次数。任何想法或想法表示赞赏。 我想要的是一个像这样的数组: array = [(32,56), (78,89)....] 元组的第一个元素在第一个位置(索引)处给出 1 的数量,第二个元素给出 0 的数量。这些数组用于存储朴素贝叶斯分类器实现的 812 个特征。

【问题讨论】:

如果您将数组(列表?)组织成一个二维 numpy 数组,例如 xy,则解决方案将像 xy.sum(axis=0) 一样简单。 总和会给我零和一的数量吗?在每个位置? 0 和 1 的和根据定义是 1 的个数。 数组是如何存储的? 数组存储为列表。 【参考方案1】:

求和的想法也可以,但我有转置列表然后为每一行运行 collections.Counter 的想法

import numpy as np
import collections

nums = [
    [1, 0, 0, 1, 0],
    [0, 1, 0, 0, 1],
    [0, 1, 0, 1, 1]
]

np_nums = np.array(nums)
transposed = np.transpose(np_nums)
for i, row in enumerate(transposed):
    print("Index  ".format(i, dict(collections.Counter(row))))

这个输出:

Index 0 1: 1, 0: 2
Index 1 0: 1, 1: 2
Index 2 0: 3
Index 3 1: 2, 0: 1
Index 4 0: 1, 1: 2

这意味着在索引 0 处有一个 1 和两个零,在索引 1 处有一个零和两个 1

【讨论】:

【参考方案2】:

这是我根据你的问题理解的

def arrayCount(arrays, index):
    data = 
    for x in arrays:
        if data.get(x[index]) is None:
            data[x[index]] = 1
        else:
            data[x[index]] += 1
    return data


a = [1, 0, 0, 1, 0]
b = [0, 1, 0, 0, 1]
x = [0, 1, 0, 1, 1]
y = [0, 1, 0, 1, 1]
z = [0, 2, 0, 1, 1]

arrays = [a, b, x, y, z]
print arrayCount(arrays, 1)

'''OUTPUT'''
# 0: 1, 1: 3, 2: 1

【讨论】:

【参考方案3】:

这里我提供了一个通用的解决方案(你可以将它用于数组中的任何值,包括 0 和 1)。将所有列表合并到 numpy nd-array,因为所有列表的长度都相同

import numpy as np
concat_array = np.concatenate((a,b,c,...x), axis=0)

沿轴=0(按列)查找值的出现次数并组合形成一个元组

# use loop if have more unique values
n_ones = (concat_array = 1).sum(axis=0)
n_zeros = (concat_array = 0).sum(axis=0)
#zip it to form a tuple
result = list(zip(n_ones, n_zeros))

打印(结果)

[(1, 2), (2, 1), (1, 2), (0, 3)] #a dummy result

【讨论】:

以上是关于如何计算元素在数组中特定位置出现的次数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C语言 怎么计算数组中每一个不同元素出现的次数

如何计算数组中元素的出现次数? [复制]

怎样求数组中元素重复的次数

如何计算特定字母在字符串中出现的次数? (C++)

在c#中找出一个数组中出现次数最多的元素,求各种方法,要详细的代码

js控制网页弹窗次数