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脚本实现分析dns日志并对受访域名排行
Sep 18 Python
简单介绍Python的轻便web框架Bottle
Apr 08 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python逆向入门教程
Jan 15 Python
python实现屏保计时器的示例代码
Aug 08 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
python实现简单日志记录库glog的使用
Dec 13 Python
PyTorch中的C++扩展实现
Apr 02 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
Pygame Event事件模块的详细示例
Nov 17 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批量生成缩略图的代码
2008/07/19 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python实现多进程代码示例
2018/10/31 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
社会实践感言
2014/01/25 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
购房协议书范本
2014/04/11 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
小学信息技术教学反思
2016/02/16 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
java版 联机五子棋游戏
2022/05/04 Java/Android