你好,周六欢乐之夜,
我正在使用 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/