python 判断矩阵中每行非零个数的方法


Posted in Python onJanuary 26, 2019

如下所示:

# -*- coding: utf-8 -*-
# @Time  : 2018/5/17 15:05
# @Author : Sizer
# @Site  : 
# @File  : test.py
# @Software: PyCharm
import time
import numpy as np

# data = np.array([
# [5.0, 3.0, 4.0, 4.0, 0.0],
# [3.0, 1.0, 2.0, 3.0, 3.0],
# [4.0, 3.0, 4.0, 3.0, 5.0],
# [3.0, 3.0, 1.0, 5.0, 4.0],
# [1.0, 5.0, 5.0, 2.0, 1.0]
# ])
data = np.random.random((1000, 1000))
print(data.shape)
start_time = time.time()
# avg = [float(np.mean(data[i, :])) for i in range(data.shape[0])]
# print(avg)


start_time = time.time()
avg = []
for i in range(data.shape[0]):
  sum = 0
  cnt = 0
  for rx in data[i, :]:
   if rx > 0:
     sum += rx
     cnt += 1
  if cnt > 0:
   avg.append(sum/cnt)
  else:
   avg.append(0)
end_time = time.time()
print("op 1:", end_time - start_time)

start_time = time.time()
avg = []
isexist = (data > 0) * 1
for i in range(data.shape[0]):
  sum = np.dot(data[i, :], isexist[i, :])
  cnt = np.sum(isexist[i, :])
  if cnt > 0:
   avg.append(sum / cnt)
  else:
   avg.append(0)
end_time = time.time()
print("op 2:", end_time - start_time)
#
# print(avg)
factor = np.mat(np.ones(data.shape[1])).T
# print("facotr :")
# print(factor)
exist = np.mat((data > 0) * 1.0)
# print("exist :")
# print(exist)
# print("res  :")
res = np.array(exist * factor)
end_time = time.time()
print("op 3:", end_time-start_time)

start_time = time.time()
exist = (data > 0) * 1.0
factor = np.ones(data.shape[1])
res = np.dot(exist, factor)
end_time = time.time()
print("op 4:", end_time - start_time)

经过多次验证, 第四种实现方式的事件效率最高!

以上这篇python 判断矩阵中每行非零个数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
举例详解Python中yield生成器的用法
Aug 05 Python
django批量导入xml数据
Oct 16 Python
Python字典简介以及用法详解
Nov 15 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
浅谈python下tiff图像的读取和保存方法
Dec 04 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
对python 判断数字是否小于0的方法详解
Jan 26 #Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 #Python
在Python中调用Ping命令,批量IP的方法
Jan 26 #Python
python 定时任务去检测服务器端口是否通的实例
Jan 26 #Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 #Python
Python检查ping终端的方法
Jan 26 #Python
使用python Telnet远程登录执行程序的方法
Jan 26 #Python
You might like
用PHP产生动态的影像图
2006/10/09 PHP
php学习之运算符相关概念
2011/06/09 PHP
PHP源码之explode使用说明
2011/08/05 PHP
深入PHP变量存储的详解
2013/06/13 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
PDO::errorInfo讲解
2019/01/28 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
你真的了解JavaScript吗?
2007/02/24 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
Python控制多进程与多线程并发数总结
2016/10/26 Python
python执行使用shell命令方法分享
2017/11/08 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
自学python的建议和周期预算
2019/01/30 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
浅析Django中关于session的使用
2019/12/30 Python
Solaris操作系统的线程机制
2012/12/23 面试题
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
vue实现倒计时功能
2021/03/24 Vue.js
设计毕业生简历中的自我评价
2013/10/01 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python