首页 > 解决方案 > Python:在多个数组列中计算零并有效地存储它们

问题描述

我创建一个数组:

import numpy as np
arr = [[0, 2, 3], [0, 1, 0], [0, 0, 1]]
arr = np.array(arr)

现在我计算每列的每个零并将其存储在一个变量中:

a = np.count_nonzero(arr[:,0]==0)
b = np.count_nonzero(arr[:,1]==0)
c = np.count_nonzero(arr[:,2]==0)

这段代码工作正常。但在我的情况下,我有更多的列,每个列都有超过 70000 个值。这将是更多的代码行和 spyder 中一个非常混乱的变量探索器。

我的问题:

  1. 是否有可能使此代码更高效并将值仅保存在一种类型的数据中,例如字典、数据框或元组?
  2. 我可以使用循环来创建 dic、数据框或元组吗?

谢谢

标签: pythonarraysnumpydictionarycounting

解决方案


您可以构造一个布尔数组arr == 0,然后沿行取其总和。

>>> (arr == 0).sum(0)
array([3, 1, 1])

推荐阅读