【问题标题】:Want to count the number of values in a column that meet a condition想统计一列中满足某个条件的值的个数
【发布时间】:2013-06-10 04:35:27
【问题描述】:

我正在尝试计算一列中满足特定条件(例如,大于 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 

fs 是我的专栏。

此代码正确打印了我想要的 0 和 1,但我不确定如何计算打印的 1 的数量。我想首先制作一个零数组,然后以某种方式将数组附加到循环中以获得正确的 0 和 1 的数组。然后我可以对数组求和。我不太确定该怎么做,而且我尝试的一切都不起作用(我在编程方面非常缺乏经验)。有人对如何解决这个问题有任何建议吗?我知道这很简单......

谢谢!

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    在 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 &gt;= 0.75 创建一个与fs 相同长度的布尔数组,其中它的元素是TrueFalse 基于条件。因为这分别相当于10,所以np.count_nonzero 然后返回非零元素的计数。

    当然,您也可以对fs 进行切片:

    np.count_nonzero(fs[0:a] >= 0.75)
    

    【讨论】:

      【解决方案2】:

      不清楚是否要在 same 循环中计算 1 的个数,在这种情况下 vaggelas 的答案是正确的。

      如果你想要一个单独的循环来计算值&gt;= 0.75的数量,你可以使用:

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

      【讨论】:

        【解决方案3】:

        如果我理解正确

        你可以使用

        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
        

        这就是你的意思?

        【讨论】:

          猜你喜欢
          • 2020-02-02
          • 1970-01-01
          • 2020-11-20
          • 2020-09-08
          • 2019-07-15
          • 1970-01-01
          • 1970-01-01
          • 2018-09-17
          相关资源
          最近更新 更多