繁体   English   中英

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

[英]Want to count the number of values in a column that meet a condition

我试图计算列中满足特定条件的值的数量(例如,大于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的数组。 然后我可以把数组加起来。 我不太清楚如何解决这个问题,我尝试的一切都不起作用(我在编程方面缺乏经验)。 有没有人对如何解决这个问题有任何建议? 我知道这很简单......

谢谢!

在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的数量,在这种情况下,vaggelas的答案是正确的。

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

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

如果我理解正确的话

您可以使用

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

这就是你的意思?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM