zoukankan      html  css  js  c++  java
  • python 判断矩阵中每行非零个数的方法

    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)

    第四种实现方式的效率最高!

  • 相关阅读:
    【JVM基础】JVM垃圾回收机制算法
    【java基础】- java双亲委派机制
    Java基础(一)
    JVM
    冷知识: 不会出现OutOfMemoryError的内存区域
    疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)
    nor flash之写保护
    spinor/spinand flash之高频通信延迟采样
    nor flash之频率限制
    使用littlefs-fuse在PC端调试littlefs文件系统
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/11101924.html
Copyright © 2011-2022 走看看