我如何计算以下数组中的0和1的数量?

y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])

y.count(0)为:

numpy。Ndarray对象没有属性计数


当前回答

Numpy为此提供了一个模块。只是一个小hack。将输入数组作为箱子。

numpy.histogram(y, bins=y)

输出是2个数组。一个是数值本身,另一个是相应的频率。

其他回答

您可以使用字典理解来创建简洁的一行代码。更多关于字典理解的内容可以在这里找到

>>> counts = {int(value): list(y).count(value) for value in set(y)}
>>> print(counts)
{0: 8, 1: 4}

这将创建一个字典,将ndarray中的值作为键,并将值的计数分别作为键的值。

当您想要计算该格式数组中某个值的出现次数时,这种方法就可以工作。

y (val)伯爵tolist()。

val为0或1

因为python列表有一个原生函数count,所以在使用该函数之前转换为list是一个简单的解决方案。

要计算出现的次数,可以使用np。独特的(数组,return_counts = True):

In [75]: boo = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])
 
# use bool value `True` or equivalently `1`
In [77]: uniq, cnts = np.unique(boo, return_counts=1)
In [81]: uniq
Out[81]: array([0, 1])   #unique elements in input array are: 0, 1

In [82]: cnts
Out[82]: array([8, 4])   # 0 occurs 8 times, 1 occurs 4 times

这个函数返回变量在数组中出现的次数:

def count(array,variable):
    number = 0
    for i in range(array.shape[0]):
        for j in range(array.shape[1]):
            if array[i,j] == variable:
                number += 1
    return number

Numpy为此提供了一个模块。只是一个小hack。将输入数组作为箱子。

numpy.histogram(y, bins=y)

输出是2个数组。一个是数值本身,另一个是相应的频率。