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爬虫模拟登录带验证码网站
Jan 22 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
关于Python数据结构中字典的心得
Dec 04 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
利用Python检测URL状态
Jul 31 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
简单了解python数组的基本操作
Nov 26 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
win10下python3.8的PIL库安装过程
Jun 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 cli配置文件问题分析
2015/10/15 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
Python本地与全局命名空间用法实例
2015/06/16 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
python调用百度REST API实现语音识别
2018/08/30 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
大学生职业生涯规划方案
2014/01/03 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
教师求职信
2014/06/17 职场文书
地震捐款倡议书
2014/08/29 职场文书
职代会闭幕词
2015/01/28 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
Python实现拼音转换
2021/06/07 Python