python 实现矩阵相乘
2015-06-12 16:01
591 查看
优势在于,矩阵的数据组织方式适合分布式计算
# coding:utf-8 __author__ = 'taohao' import random class Matrix(object): def build_matrix_a(self, row, col): """ matrix: 1 0 2 -1 3 1 turn to ->Matrix name,rowNum,colNum,elementNum for example: A,1,1,1 A,1,2,1 A,1,3,2 A,2,1,-1 A,2,2,3 A,2,3,1 save the matrix to file for hadoop to read data from file :return: """ fd = open('MatrixA.txt', 'w') num = '' for i in range(row): for j in range(col): num += ',' + str(i+1) + ',' + str(j+1) + ',' num += str(random.randint(1, 10)) fd.write('A' + num + '\n') num = '' fd.close() def build_matrix_b(self, row, col): """ the same as def build_matrix_a :param row: :param col: :return: """ fd = open('MatrixB.txt', 'w') num = '' for i in range(row): for j in range(col): num += ',' + str(i+1) + ',' + str(j+1) + ',' num += str(random.randint(1, 10)) fd.write('B' + num + '\n') num = '' fd.close() def matrix_multify(self, row, col): result = {} matrix_a = {} matrix_b = {} fd_a = open("MatrixA.txt", 'r') fd_b = open('MatrixB.txt', 'r') for line_a in fd_a: line_item = line_a.rstrip('\n').split(r',') if line_item[1] not in matrix_a: matrix_a[line_item[1]] = [] matrix_a[line_item[1]].append(line_item[3]) for line_b in fd_b: line_item_b = line_b.rstrip('\n').split(r',') if line_item_b[2] not in matrix_b: matrix_b[line_item_b[2]] = [] matrix_b[line_item_b[2]].append(line_item_b[3]) fd_a.close() fd_b.close() # print matrix_a # print matrix_b for i in range(row): row_num = matrix_a.get(str(i+1)) # print 'row', row_num for j in range(col): col_num = matrix_b.get(str(j+1)) # print 'col', col_num k = 0 while k < len(row_num): if str(i+1)+str(j+1) not in result: result[str(i+1)+str(j+1)] = 0 result[str(i+1)+str(j+1)] += int(row_num[k]) * int(col_num[k]) k += 1 print result # output the result if __name__ == '__main__': rowA = 4 colA = 2 rowB = 2 colB = 3 matrix = Matrix() matrix.build_matrix_a(rowA, colA) matrix.build_matrix_b(rowB, colB) matrix.matrix_multify(rowA, colB)
相关文章推荐
- Python: 什么是*args和**kwargs
- Python With语句 和context manager
- Python循环定时服务功能(类似contrab)
- 初学python------写一个心理测试
- python 虚环境部署
- UliPad 初体验----python 开发利器
- Python的IDLE清屏方法
- Python 中 sqlite3的使用
- Python深入:super函数
- Python基础:常用函数
- Python抓取上海各地区房价平均值
- python+Eclipse+pydev环境搭建
- python for android environment on ubuntu vivid
- Python 字符串操作
- Python排列组合实验
- Java调用Python(续)
- Python环境变量的引入
- python yield用法举例说明
- Python 知识点
- 使用Pyjnius 从python调用自定义Java方法