Python语言实现矩阵计算
小标 2018-11-06 来源 : 阅读 1461 评论 0

摘要:本文主要向大家介绍了Python语言实现矩阵计算,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言实现矩阵计算,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

矩阵其实就是二维数组
这里用Python模拟一下矩阵运算的加法和乘法(Python3实现)

import copy
from functools import reduce

class Matrix(object):

    def __init__(self, dyadic_array):
        self.matrix = dyadic_array

    def __str__(self):
        s = ''
        for arr1 in self.matrix:
            l = len(arr1)
            for index2, item in enumerate(arr1):
                if index2 == 0:
                    s += '▎\t'
                s += str(item) + '\t'
                if index2 + 1 == l:
                    s += '▎\n'
        return s

    def __add__(self, matrix):
        if self.size() != matrix.size():
            print('Size different error')
        clone_matrix = copy.deepcopy(self.matrix)
        for index1, arr1 in enumerate(clone_matrix):
            for index2, item in enumerate(arr1):
                clone_matrix[index1][index2] += matrix.matrix[index1][index2]
        return Matrix(clone_matrix)

    def __mul__(self, matrix):
        m = self.rows()
        n = matrix.cols()
        k = self.cols()
        if k != matrix.rows():
            print('Size error')
        temp_matrix = [([0] * n) for i in range(m)]
        for index1, arr1 in enumerate(temp_matrix):
            row = self.get_row(index1)
            for index2, item in enumerate(arr1):
                col = matrix.get_col(index2)
                temp_matrix[index1][index2] = reduce(lambda x, y=0: x + y, map(lambda i: row[i] * col[i], range(k)))
        return Matrix(temp_matrix)

    def size(self):
        return '%s*%s' % (len(self.matrix), len(self.matrix[0]))

    def rows(self):
        return len(self.matrix)

    def cols(self):
        return len(self.matrix[0])

    def get_row(self, index):
        return self.matrix[index]

    def get_col(self, index):
        return list(map(lambda a: a[index], self.matrix))

a1 = [[4, 0, 3], [4, 6, 7]]
a2 = [[1, 3, 3], [24, 6, 7]]
a3 = [[1, 2], [1, 2], [1, 2]]

m1 = Matrix(a1)
m2 = Matrix(a2)
m3 = Matrix(a3)

m5 = m1 * m3

print(m5)    

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程