python判断矩阵中每行非零个数的方法-创新互联
如下所示:
10年积累的成都网站制作、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有邵原免费网站建设让你可以放心的选择与我们合作。# -*- 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判断矩阵中每行非零个数的方法-创新互联
标题链接:http://hbruida.cn/article/edhoe.html