Python 多维数组 - 计算非零条目数的最有效方法

标签 python arrays multidimensional-array

你好,周六欢乐之夜,

我正在使用 Python,我非常喜欢它。

假设我有一个 python 数组:

x = [1, 0, 0, 1, 3]

计算列表中所有非零元素的最快方法是什么 (ans: 3) ?如果可能的话,我也想在没有 for 循环的情况下做到这一点——尽可能以最简洁明了的方式,在概念上说些类似的话

[counter += 1 for y in x if y > 0]

现在 - 我真正的问题是我有一个多维数组,我真正想避免的是执行以下操作:

for p in range(BINS):
    for q in range(BINS):
        for r in range(BINS):
            if (mat3D[p][q][r] > 0): some_feature_set_count += 1

从我看到的小 python 来看,我的直觉是有一种非常干净的语法(和高效)的方式来做到这一点。

想法,有人吗?

最佳答案

对于一维情况:

sum(1 for i in x if i)

对于多维情况,您可以嵌套:

sum(sum(1 for i in row if i) for row in rows)

或者在一个构造中完成所有操作:

sum(1 for row in rows
      for i in row if i)

关于Python 多维数组 - 计算非零条目数的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294482/

相关文章:

c - 下面的符号都指向什么?

arrays - 在 Swift 5 中,如何高效地提取和使用多维数组中的元素?

python - 如何存储/缓存类中方法的值以便稍后在同一类的其他方法中使用?

javascript - 未定义从附加数组中返回

arrays - Ruby——通过键将子数组的值添加到数组中

php - 将两个数组元素一一插入数据库表

arrays - PostgreSQL 多维数组搜索

python - 如何创建组合框 QItemDelegate

python - 从数据框的列中减去子列

python - 为什么Python的内置数学运算符在处理大数时很慢?