2024-04-19 07:47:32 发布
网友
我有一个布尔类型的NumPy数组boolarr。我想计算值为True的元素数。是否有专门用于此任务的NumPy或Python例程?或者,我需要遍历脚本中的元素吗?
True
通过比较两个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])
它可以扩展到D维。
结果是:
预测:
[[1 2] [2 0] [2 0] [1 2] [1 2]]
目标:
[[0 1] [1 0] [2 0] [0 0] [2 1]]
D=1的正确预测计数:1
1
D=2的正确预测计数:2
2
你有多种选择。以下是两个选项。
numpy.sum(boolarr) numpy.count_nonzero(boolarr)
下面是一个例子:
>>> 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
当然,这是一个特定于bool的答案。一般来说,您可以使用numpy.count_nonzero。
bool
numpy.count_nonzero
>>> np.count_nonzero(boolarr) 5
这个问题为我解决了一个非常相似的问题,我想我应该分享一下:
在原始python中,可以使用sum()来计算True中的list值:
sum()
list
>>> sum([True,True,True,False,False]) 3
但这行不通:
>>> sum([[False, False, True], [True, False, True]]) TypeError...
通过比较两个numpy数组并计算匹配数(例如机器学习中的正确类预测),我发现下面的二维示例非常有用:
它可以扩展到D维。
结果是:
预测:
目标:
D=1的正确预测计数:
1
D=2的正确预测计数:
2
你有多种选择。以下是两个选项。
下面是一个例子:
当然,这是一个特定于
bool
的答案。一般来说,您可以使用numpy.count_nonzero
。这个问题为我解决了一个非常相似的问题,我想我应该分享一下:
在原始python中,可以使用
sum()
来计算True
中的list
值:但这行不通:
相关问题 更多 >
编程相关推荐