我正在尝试计算列中满足特定条件的值的数量(例如,大于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的数组。然后我可以把数组加起来。我不太清楚如何解决这个问题,我尝试的一切都不起作用(我在编程方面缺乏经验)。有没有人对如何解决这个问题有任何建议?我知道这很简单......
谢谢!
答案 0 :(得分: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
的布尔数组,其元素为True
或False
,基于条件。由于这相当于1
和0
,因此np.count_nonzero
会返回非零元素的计数。
当然,你也可以切片fs
:
np.count_nonzero(fs[0:a] >= 0.75)
答案 1 :(得分:1)
目前尚不清楚是否要在相同的循环中计算1的数量,在这种情况下,vaggelas的回答是正确的。
如果您想要一个单独的循环来计算值>= 0.75
的数量,您可以使用:
>>> sum(1 for i in fs[0:a] if i >= 0.75)
答案 2 :(得分:-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
那是你的意思吗?