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实现telnet客户端的方法
Apr 15 Python
python妹子图简单爬虫实例
Jul 07 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
Python3爬楼梯算法示例
Mar 04 Python
Pyecharts地图显示不完成问题解决方案
May 11 Python
matplotlib阶梯图的实现(step())
Mar 02 Python
python基础之文件操作
Oct 24 Python
Python OpenCV实现图形检测示例详解
Apr 08 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面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
PHP 引用文件技巧
2010/03/02 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
Python中几种操作字符串的方法的介绍
2015/04/09 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python生成密码字典的方法
2018/07/06 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
心理健康教育制度
2014/01/27 职场文书
初三英语教学计划
2015/01/23 职场文书
单位考核聘任报告
2015/03/02 职场文书
爱心捐助活动总结
2015/05/09 职场文书