当前位置:首页 > Python技术文章 > python 判断矩阵中每行非零个数的方法

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

  • 发布时间:
  • 作者:码农之家原创
  • 点击:76

这篇文章主要知识点是关于python、矩阵、非零、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python黑客攻防入门
  • 类型:黑客技术大小:63.1 MB格式:PDF作者:赵诚文
立即下载

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

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

推荐内容

深入理解Django中的Signal

浅析django开发者模式中的autoreload实现方法

示例讲解YII Framework框架使用YIIC快速创建YII应用之migrate用法

关于Vue子组件向父组件通信与父组件调用子组件中的方法步骤

使用vueScroll实现移动端下拉刷新、上拉加载示例代码

展开 +

收起 -

python 相关电子书
学习笔记
网友NO.508100

python如何输入字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 )来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 = 'Hello World!'var2 = Runoob Python 访问字符串中的值 Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。 Python 访问子字符串,可以使用方括号来截取字符串,如下实例: var1 = 'Hello World!'var2 = Runoobprint (var1[0]: , var1[0])print (var2[1:5]: , var2[1:5]) 以上示例执行结果 var1[0]: Hvar2[1:5]: unoo Python 字符串更新 你可以截取字符串的一部分并与其他字段拼接,如下实例: var1 = 'Hello World!' print (已更新字符串 : , var1[:6] + 'Runoob!') 以上示例执行结果 已更新字符串 : Hello Runoob! python转义字符 在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表: 转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \' 单引号 \ 双引……

网友NO.322361

Python面向对象程序设计之私有属性及私有方法示例

本文实例讲述了Python面向对象程序设计之私有属性及私有方法。分享给大家供大家参考,具体如下: 如果有一个对象,当需要对其进行修改属性时,有2种方法: (1)对象名.属性名=数据----直接修改 (2)对象名.方法名()-----间接修改 为了更好的保障属性安全,不能随意修改,一般处理方式为: (1)将属性定义为私有属性 (2)添加一个可以调用的方法,供调用,也就是间接调用属性 首先我讲解下私有属性的例子: 1.下面这个是一个错误的例子: class People(object): def __init__(self,name): self.__name=name def getName(self): return self.__name def setName(self,newName): if len(newName) = 5: self.__name = newName else: print("error:名字长度需要大于或者等于5")xiaoming = People("monkey")print(xiaoming.__name) 这是错误的,因为直接输出了私有的属性,是不可以的,解决方式为:或者删掉object也行 class……

网友NO.746341

python取余运算符知识点详解

python取余运算符是什么 ? python取余运算符是%,即表示取模,返回除法的余数。 假设变量: a=10,b=20: 那么b % a 输出结果 0 注: Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级 python 取整与取余规则 1) //运算取整时保留整数的下界,即偏向于较小的整数 2) int是剪去小数部分,只保留前面的整数 3) round函数遵循四舍五入的法则 5//3 1 -5//3 -2 int(5.3) 5 int(5.6) 5 int(-5/3) -1 round(5.3) 5 round(5.6) 6 4) % 运算符,取余数时余数符号由被除数决定 -5%3 #仅有一负号时,在负无穷到-5之间找到一个数能被3整数,最接近于-5的数是-6,所以-5 - (-6) = 1 1 5%-3 -1 -5%-3 -2 5%3 ……

网友NO.632831

Python中垃圾回收和del语句详解

Python中的垃圾回收算法是采用引用计数, 当一个对象的引用计数为0时, Python的垃圾回收机制就会将对象回收 a = "larry"b = a larry这个字符串对象, 在第一行被贴了a标签后, 引用计数为1, 之后在第二行, 由贴上了b标签, 此时, 该字符串对象的引用计数为 a = "larry"b = adel a 注意: 在Python语言中, del语句操作某个对象的时候, 并不是直接将该对象在内存中删除, 而是将该对象的引用计数-1 a = "larry" b = a del a id(b)4572141808 id(a)Traceback (most recent call last): File "input", line 1, in module id(a)NameError: name 'a' is not defined 从以上示例中可以看出, larry这个字符串对象在第一行被贴上了a标签, 此时字符串对象的引用计数为1, 接着第二行又被贴上了b标签, 此时该字符串对象的引用计数为2, 在第三行中, del语言删除了a变量(标签), 在后续的print中可以看出, 内存中实际的字符串对象并没有被删除……

网友NO.187898

python中__init__.py的作用

init.py 文件的作用是将文件夹变为一个Python模块,Python中的每个模块的包中,都有__init__.py 文件。 通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。 init.py 中还有一个重要的变量,all, 它用来将模块全部导入 可以被import语句导入的对象是以下类型 当导入模块时,解释器按照sys.path列表中的目录顺序来查找导入文件 以上就是python中__init__.py的作用的详细内容,更多请关注码农之家其它相关文章! ……

<
1
>

电子书 编程教程 文档 软件 源码 视频

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757