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的汉字转GBK码实现代码
Feb 19 Python
python中的__init__ 、__new__、__call__小结
Apr 25 Python
python基础教程之面向对象的一些概念
Aug 29 Python
python生成器generator用法实例分析
Jun 04 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python下10个简单实例代码
Nov 15 Python
pandas 透视表中文字段排序方法
Nov 16 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
超级实用的8个Python列表技巧
Aug 24 Python
Python并发编程实例教程之线程的玩法
Jun 20 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单例模式实现(对象只被创建一次)
2012/12/05 PHP
深入掌握include_once与require_once的区别
2013/06/17 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
javascript如何创建对象
2016/08/29 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python输出各行命令详解
2018/02/01 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python实现自动装机功能案例分析
2020/10/22 Python
python logging模块的使用详解
2020/10/23 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
Java程序开发中如何应用线程
2016/03/03 面试题
签约仪式主持词
2014/03/19 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
医生见习报告范文
2014/11/03 职场文书
五年级上册复习计划
2015/01/19 职场文书
贫困证明怎么写
2015/06/16 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python