想要统计满足条件的列中数值的数量

4

我正在尝试计算符合某些条件(例如大于0.75)的列中数值的数量。我所拥有的这一列由2000多个小数构成。

这是我尝试过的方法:

a = len(fs)
c = np.zeros(a)

for i in fs[0:a]:
    if i >= 0.75:
        print = 1

    elif i < 0.75:
        print = 0 

这是我的专栏。

这段代码可以正确地打印我想要的 0 和 1,但我不确定如何计算打印的 1 的数量。我考虑首先创建一个由零组成的数组,然后在循环中以某种方式将数组追加到具有正确 0 和 1 的数组中。然后我可以对数组求和。我不太确定如何处理这个问题,而且我尝试的所有方法都没有奏效(我在编程方面经验不足)。有人能给出关于如何解决这个问题的建议吗?我知道这非常简单...

谢谢!

3个回答

3
在numpy中,您可以像这样操作:
np.where(fs >= 0.75)[0].size

或者
np.count_nonzero(fs >= 0.75)

两种方法等效,但我更喜欢第二种。详细解释请参见文档:http://docs.scipy.org/doc/numpy/reference/generated/numpy.count_nonzero.html。基本上,fs >= 0.75创建了一个布尔数组,其长度与fs相同,其中的元素根据条件为TrueFalse。由于这等效于分别为10,因此np.count_nonzero返回非零元素的计数。当然,您也可以对fs进行切片:
np.count_nonzero(fs[0:a] >= 0.75)

1

不清楚您是否要在相同的循环中计算 1 的数量,如果是这样,那么 vaggelas 的答案是正确的。

如果您想使用一个单独的循环来计算值大于等于 0.75 的数量,可以使用以下代码:

>>> sum(1 for i in fs[0:a] if i >= 0.75)

-1

如果我理解正确

你可以使用

countone = 0  #counter for the times you print one
countzero = 0 # counter fot the times you print 0

for i in fs[0:a]:
    if i >= 0.75:
        print = 1
        countone+=1

    elif i < 0.75:
        print = 0 
        countzero +=1

你的意思是这个吗?


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