如何计算 NumPy 布尔数组中真实元素的数量

新手上路,请多包涵

我有一个布尔类型的 NumPy 数组“boolarr”。我想计算值为 True 的元素的数量。是否有专用于此任务的 NumPy 或 Python 例程?或者,我是否需要遍历脚本中的元素?

原文由 norio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 448
2 个回答

你有多种选择。以下是两个选项。

 boolarr.sum()
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)

>>> boolarr.sum()
5

当然,这是 bool 特定的答案。更一般地说,您可以使用 numpy.count_nonzero

 >>> np.count_nonzero(boolarr)
5

原文由 David Alber 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个问题为我解决了一个非常相似的问题,我想我应该分享:

在原始 python 中,您可以使用 sum() 来计算 True 中的值 list

 >>> sum([True,True,True,False,False])
3

但这行不通:

 >>> sum([[False, False, True], [True, False, True]])
TypeError...

原文由 Guillaume Gendre 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题