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 

fs 是我的专栏。

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

谢谢!

4

3 回答 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的长度相同的布尔数组。由于这分别等价于和,则返回非零元素的计数。fsTrueFalse10np.count_nonzero

当然,您也可以切片fs

np.count_nonzero(fs[0:a] >= 0.75)
于 2013-06-13T17:25:35.233 回答
1

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

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

>>> sum(1 for i in fs[0:a] if i >= 0.75)
于 2013-06-13T17:18:29.977 回答
-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

这就是你的意思?

于 2013-06-13T17:16:00.030 回答