python – 计算与元组元组中的模式匹配的元素
发布时间:2020-12-20 12:24:27 所属栏目:Python 来源:网络整理
导读:我有一个矩阵m,我想计算零的数量. m=((2,2,2),(4,4,5,4),(0,9,8),(2,0)) 我目前的代码如下: def zeroCount(M): return [item for row in M for item in row].count(0) # list of lists is flattened to form single list,and number of 0 are counted 有没
我有一个矩阵m,我想计算零的数量.
m=((2,2,2),(4,4,5,4),(0,9,8),(2,0)) 我目前的代码如下: def zeroCount(M): return [item for row in M for item in row].count(0) # list of lists is flattened to form single list,and number of 0 are counted 有没有办法更快地做到这一点?目前,我花了0.4秒在4乘4矩阵上执行20,000次函数,其中矩阵同样可能包含零,因为它们不是. 一些可能的起点(但我无法比我的代码更快地工作)是其他问题:counting non-zero elements in numpy array,finding the indices of non-zero elements和counting non-zero elements in iterable. 解决方法
到目前为止最快的:
def count_zeros(matrix): total = 0 for row in matrix: total += row.count(0) return total 对于2D元组,你可以use a generator expression: def count_zeros_gen(matrix): return sum(row.count(0) for row in matrix) 时间比较: %timeit [item for row in m for item in row].count(0) # OP 1000000 loops,best of 3: 1.15 μs per loop %timeit len([item for row in m for item in row if item == 0]) # @thefourtheye 1000000 loops,best of 3: 913 ns per loop %timeit sum(row.count(0) for row in m) 1000000 loops,best of 3: 1 μs per loop %timeit count_zeros(m) 1000000 loops,best of 3: 775 ns per loop 对于基线: def f(m): pass %timeit f(m) 10000000 loops,best of 3: 110 ns per loop (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 从scipy optimize.least_squares方法获取拟合参数
- Python对象拷贝功能实例
- python模块turtle简单用法
- Linux 下 Python 实现按任意键退出的实现方法
- Django实现简单分页功能的方法详解
- Python Requests安装与简单运用
- day97:MoFang:移动端APP开发准备&移动端项目搭建&A
- python – 寻找一种优雅的方式,可以在两个不同长度的列表上
- python – 使用MultiIndex的Pandas数据框:检查字符串是否包
- python – Sublime Text 2 API在编辑器启动时运行nodejs脚本