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)

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

  • 相关阅读:
    使用NodeJS模块-第三方提供的模块(什么是npm)
    nodejs编写后台
    解决npm下载慢的问题
    全局安装与本地安装
    NPM常用命令
    使用NodeJS模块-NodeJS官方提供的核心模块
    导出模块成员
    Node.js提供了哪些内容(API)
    node.js的安装
    什么是node.js
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/11101924.html
Copyright © 2011-2022 走看看