Dav*_*ber 236
你有多种选择.以下两个选项.
numpy.sum(boolarr)
numpy.count_nonzero(boolarr)
Run Code Online (Sandbox Code Playgroud)
这是一个例子:
>>> import numpy as np
>>> boolarr = np.array([[0, 0, 1], [1, 0, 1], [1, 0, 1]], dtype=np.bool)
>>> boolarr
array([[False, False, True],
[ True, False, True],
[ True, False, True]], dtype=bool)
>>> np.sum(boolarr)
5
Run Code Online (Sandbox Code Playgroud)
当然,这是一个bool
特定的答案.更一般地说,你可以使用numpy.count_nonzero
.
>>> np.count_nonzero(boolarr)
5
Run Code Online (Sandbox Code Playgroud)
Gui*_*dre 29
这个问题为我解决了一个非常相似的问题,我认为我应该分享:
在原始python中,您可以使用sum()来计算dict中的True值:
>>> sum([True,True,True,False,False])
3
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
>>> sum([[False, False, True], [True, False, True]])
TypeError...
Run Code Online (Sandbox Code Playgroud)
也许这会对某人有所帮助.
在比较两个 numpy 数组和计算匹配数(例如机器学习中的正确类预测)方面,我发现以下二维示例很有用:
import numpy as np
result = np.random.randint(3,size=(5,2)) # 5x2 random integer array
target = np.random.randint(3,size=(5,2)) # 5x2 random integer array
res = np.equal(result,target)
print result
print target
print np.sum(res[:,0])
print np.sum(res[:,1])
Run Code Online (Sandbox Code Playgroud)
可以扩展到 D 维。
结果是:
预言:
[[1 2]
[2 0]
[2 0]
[1 2]
[1 2]]
Run Code Online (Sandbox Code Playgroud)
目标:
[[0 1]
[1 0]
[2 0]
[0 0]
[2 1]]
Run Code Online (Sandbox Code Playgroud)
D=1 的正确预测数: 1
D=2 的正确预测数: 2
归档时间: |
|
查看次数: |
189715 次 |
最近记录: |