工作中经常遇到求矩阵中非零元素个数的个数(L0范式)
下面介绍几种方法:

  • 1、常规思路
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]
])
x,y = data.shape
num = 0
for i in range(0, x):for j in range(0, y):if array[i][j] > 0:num += 1
print("L0 of data is:", num)

这是大多数人多常规思路,但是该方法在小矩阵,或小数据集上没有问题,一旦遇到大矩阵或者大数据集,性能太低,耗时太长

  • 2 、尝试使用np 内部方法
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[data < 0 ] = 0
data[data > 0] = 1
num = array.sum()
print("L0 of data is:", num)

这种方式就可以大大提高处理性能,面对大数据集也可以游刃有余

  • 3、思路扩展
    如果目标不是非零元素个数,而是小于或大于某一值threshold的元素个数呢
data[data < threshold ] = 0
data[data > threshold ] = 1
num = array.sum()
print("num of data is:", num)

求矩阵中非零元素个数(L0范式)相关推荐

  1. matlab计算矩阵中非零元素个数

    1.求计算矩阵中每一列非零元素个数 假设矩阵A: A = 0 1 0 55 6 0 19 9 0 00 0 4 2 计算矩阵A中每一列的非零元素个数 count=sum(A~=0)count =2 3 ...

  2. Matlab与数据结构 -- 搜索向量或矩阵中非零元素的位置

    本图文介绍了Matlab中搜索向量或矩阵中非零元素位置的方法.

  3. numpy 求矩阵非零元素的均值

    假如我们有一个矩阵A,想要求其中的非零元素的均值,计算方式是: 直接用mean来求的话,分母是所有元素的个数,不符合我们的要求. 在matlab中,这样做: mean(AA(AA~=0)) numpy ...

  4. Python numpy nonzero 取矩阵中非零元素的下标

    文章目录 1. 对矩阵进行处理 2. 使用的过程 1. 对矩阵进行处理 >>> a3 = [[1, 2, 3], [1, 3, 5], [1, 2, 4]] >>> ...

  5. Matlab扫雷记录01-matlab中获得向量非零元素个数

    2021年的第一篇博文 matlab怎么把矩阵非零元素个数赋值给一个变量 1.find函数tql 一.find函数是什么? 二.使用步骤 1.语法说明Syntax 2.Description 3. l ...

  6. c语言 统计已初始化的二维数组a[3][4]中非零元素的个数(用指针实现)

    统计已初始化的二维数组a[3][4]中非零元素的个数(用指针实现) [输入输出示例] 1 0 2 3↙ 2 3 0 4↙ 0 1 0 2↙ nonezero=8 ` #include<stdio ...

  7. L0范式、L1范式、L2范式解释通俗版

    L0范数是指向量中非0的元素的个数.(L0范数很难优化求解) L1范数是指向量中各个元素绝对值之和 L2范数是指向量各元素的平方和然后求平方根 L1范数可以进行特征选择,即让特征的系数变为0. L2范 ...

  8. matlab 求矩阵程序设计,MATLAB程序设计教程(2)—MATLAB矩阵及其运算(3)

    (3) [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量. 例2-12 用求特征值 ...

  9. matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用

    摘    要: 高等代数是一门逻辑思维比较强和理论知识比较深的学科, 它具有丰富的数学知识, 涉及许多重要的数学思想, 其在数学领域的应用很广泛, 如行列式.矩阵的相关计算和求解线性方程组的解方面的应 ...

最新文章

  1. tm matlab,[转载]关于matlab中textread
  2. 全面掌握ISO8583报文协议
  3. 2020-11-11(对话框简单总结)
  4. B系列台达服务器解密码步骤,台达HMI解密,DOP-A解密,DOP-B解密,文件密码解密
  5. 转换和编辑的sony的MTS硬盘摄像机格式文件。
  6. Spring注解注入原理
  7. 最优化算法(1):数学基础
  8. 营销理论模型:4P、STP理论、SWOT图解
  9. 洛谷P3403 跳楼机(最短路)
  10. 37岁被裁,120天没找到工作,无奈去小公司,结果懵了
  11. cuda学习(5):使用cuda核函数加速warpaffine
  12. 什么是教养?不给人制造麻烦,就是最好的教养。
  13. 软件设计师冲刺:临考快速记忆
  14. 破解安居家数字加密成功爬取
  15. 10款非常实用的在线网站原型设计工具
  16. SEO必看的免费推广渠道
  17. cannot connect to host的解决办法
  18. 毕设-基于人脸识别的教室点名系统(一)
  19. Marvell交换机芯片SMI接口读写协议
  20. centos7 基于Kubernetes 安装dashboard

热门文章

  1. html是用cdn资源,网站常用前端公共库CDN服务资源(百度+360)
  2. 说说程序员不解风情的瞬间
  3. 【UVM基础】虚序列器与虚序列(virtual sequencer与virtual sequence)快速上手指南
  4. adb 不可以网络连接问题
  5. 数字图像处理:基本算法-卷积和相关
  6. 漫画的力量,你可能一无所知
  7. 3.2.3 存储器与CPU的连接(重难点 看完就会)
  8. 地平线4显示与服务器通讯发生错误,地平线4加载失败发生不明错误的解决方法 - 系统家园...
  9. 六、模块实现:用户管理模块(1)
  10. 设计模式学习笔记--访问者(Visitor)模式