当前位置:主页 > python教程 > python 判断矩阵中每行非零个数的方法

如何使用python 判断矩阵中每行非零个数

发布:2020-02-08 17:48:30 76


为网友们分享了python相关的编程文章,网友麴宏邈根据主题投稿了本篇教程内容,涉及到python、矩阵、非零、python 判断矩阵中每行非零个数的方法相关内容,已被499网友关注,相关难点技巧可以阅读下方的电子资料。

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

如下所示:

# -*- 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 判断矩阵中每行非零个数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。


参考资料

相关文章

  • 实例讲解Python3如何利用print输出带颜色的彩色字体

    发布:2020-02-14

    用Python写命令行程序的时候,单一的输出颜色太单调了,所以下面这篇文章主要给大家介绍了关于Python3利用print输出带颜色的彩色字体的相关资料,需要的朋友可以参考下


  • 解密Python中的作用域与名字空间

    发布:2023-03-23

    名字空间对于 Python 来说是一个非常重要的概念,并且与名字空间这个概念紧密联系在一起的还有名字、作用域这些概念,下面就来剖析这些概念是如何体现的


  • python对象及面向对象技术详解

    发布:2023-01-24

    给大家整理了关于python的教程,这篇文章主要介绍了python对象及面向对象技术,结合实例形式详细分析了Python面向对象所涉及的类、对象、方法、属性等概念与使用技巧,需要的朋友可以参考下


  • 多版本python python2和python3共存以及pip共存方法

    发布:2019-06-21

    这篇文章主要为大家详细介绍了python多版本的安装方法,解决python2和python3共存以及pip共存问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • 解析Python3之对象垃圾收集机制

    发布:2020-02-17

    在Python中,它在每个对象中保持了一个计数器,用于记录指向该对象的的引用的个数。这篇文章主要介绍了Python3中的对象垃圾收集机制,需要的朋友可以参考下


  • Python常见异常的处理方式浅析

    发布:2023-03-31

    异常指当程序出现错误后程序的处理方法,异常机制提供了程序正常退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器,如序列的下标越界、打开不存在的文件、空引用异常等


  • python使用ctypes调用第三方库时出现undefined symbol错误详解

    发布:2023-04-03

    python中时间的库有time和datetime,pandas也有提供相应的时间处理函数,下面这篇文章主要给大家介绍了关于python使用ctypes调用第三方库时出现undefined symbol错误的相关资料,需要的朋友可以参考下


  • Python Flask的request对象使用详解

    发布:2023-04-13

    本文介绍Flask request对象,一个完整的HTTP请求,包括客户端向服务端发送的Request请求和服务器端发送Response响应.为了能方便访问获取请求及响应报文信息,Flask框架提供了一些内建对象,下面就来说一下Flask针对请求提供内建对象reques,需要的朋友可以参考一下


网友讨论