Python不使用库进行矩阵运算详解

 更新时间:2023年08月23日 09:37:58   作者:小小草帽  
这篇文章主要介绍了Python不使用库进行矩阵运算详解,矩阵乘法中,需要判断两个矩阵是否可以进行相乘,即前一个矩阵的列是否等于后一个矩阵的行,,需要的朋友可以参考下

Python矩阵运算 

矩阵乘法

矩阵乘法中,需要判断两个矩阵是否可以进行相乘,即前一个矩阵的列是否等于后一个矩阵的行。具体代码如下:

class Solution:
    def multiplyofmatrix(self, A, f):
        """
        Compute matrix A * matrix f.
        For example:
        Input:
        A: [[1, 2], [3, 4]]    Row of A: 2 Col of A: 2
        f: [[1, 2], [3, 4]]    Row of f: 2 Col of f: 2
        Output:
        ans: [[7, 10], [15, 22]]
        s.t. A.col == f.col
        """
        Arow, Acol = len(A), len(A[0])
        frow, fcol = len(f), len(f[0])
        if Acol != frow:
            return 'False!'
        ans = [[0] * fcol for _ in range(Arow)]
        for i in range(fcol):
            for j in range(Arow):
                for k in range(frow):
                    ans[j][i] += A[j][k]*f[k][i]
        return ans
if __name__=='__main__':
    a = Solution().multiplyofmatrix([[1, 2], [3, 4]], [[1, 2], [3, 4]])
    print(a)

转置矩阵

    def transposeofmatrix(A):
        """
        Matrix transpose.
        For example:
        Input:
        A = [[1, 2],
             [3, 4]]
        Output:
        A_transpose = [[1, 3],
                       [2, 4]]
        """
        return [list(raw) for raw in zip(*A)]

矩阵余矩阵

    def submatrix(A, i, j):
        # 矩阵A第i行第j列元素的余矩阵
        m, n = len(A), len(A[0])
        C = [[A[x][y] for y in range(n) if y != j] for x in range(m) if x != i]  # 列表推导式
        return C

矩阵行列式

需要用到矩阵余矩阵函数,代码如下:

    def detofmatrix(A):
        m = len(A)  # 矩阵的行数
        n = len(A[0])  # 矩阵的列数
        if (m == 1 and n == 1):
            return A[0][0]
        else:
            value = 0
            for j in range(n):
                value += ((-1) ** (j + 2)) * A[0][j] * detofmatrix(submatrix(A, 0, j))
            return value

矩阵的逆

需要用到矩阵行列式函数和余矩阵函数,代码如下:

    def inverseofmatrix(A):
        m = len(A)  # 矩阵的行数
        n = len(A[0])  # 矩阵的列数
        C = [[0] * n for _ in range(m)]
        d = self.detofmatrix(A)
        for i in range(m):
            for j in range(n):
                C[i][j] = ((-1) ** (i + j + 2)) * detofmatrix(submatrix(A, j, i))
                C[i][j] = C[i][j] / d
        return C

求方程组根

求∣ A x − b ∣ = 0即为求 x = A-1 ∗b(A可逆的情况下),调用求逆函数和矩阵相乘函数即可。

求一元n次方程正实数根

例如:  x+ ax+bx = c,其中a, b, c, 均为正整数,求正实数根。

到此这篇关于Python不使用库进行矩阵运算详解的文章就介绍到这了,更多相关Python矩阵运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pytorch实现ResNet结构的实例代码

    pytorch实现ResNet结构的实例代码

    ResNet网络可以达到很深的层数的原因就是不断的堆叠残差结构而来的,接下来通过本文给大家介绍pytorch实现ResNet结构的示例代码,喜欢的朋友跟随小编一起看看吧
    2021-05-05
  • Python正则表达式教程之二:捕获篇

    Python正则表达式教程之二:捕获篇

    什么是捕获呢?使用小括号指定一个子表达式后,匹配这个子表达式的文本(即匹配的内容)可以在表达式或者其他过程中接着用,下面这篇文章就主要介绍了Python正则表达式中关于捕获的相关资料,需要的朋友可以参考下。
    2017-03-03
  • Python编码爬坑指南(必看)

    Python编码爬坑指南(必看)

    下面小编就为大家带来一篇Python编码爬坑指南(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Pygame transform模块入门介绍

    Pygame transform模块入门介绍

    pygame.transform模块允许您对加载、创建后的图像进行一系列操作,比如调整图像大小、旋转图片等操作,感兴趣的可以了解一下
    2022-08-08
  • python实现树形打印目录结构

    python实现树形打印目录结构

    这篇文章主要为大家详细介绍了python树形打印目录结构的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 解决Python3中Matplotlib绘图显示方块的问题

    解决Python3中Matplotlib绘图显示方块的问题

    这篇文章主要介绍了解决Python3中Matplotlib绘图显示方块的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • pytorch 加载(.pth)格式的模型实例

    pytorch 加载(.pth)格式的模型实例

    今天小编就为大家分享一篇pytorch 加载(.pth)格式的模型实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • django 多数据库及分库实现方式

    django 多数据库及分库实现方式

    这篇文章主要介绍了django 多数据库及分库实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python两个整数相除得到浮点数值的方法

    Python两个整数相除得到浮点数值的方法

    这篇文章主要介绍了Python两个整数相除得到浮点数值的方法,本文直接给出代码示例,需要的朋友可以参考下
    2015-03-03
  • Python虚拟环境virtualenv的安装与使用详解

    Python虚拟环境virtualenv的安装与使用详解

    virtualenv可以用来管理互不干扰的独立python虚拟环境,在有些场景下非常有用,下面这篇文章主要给大家介绍了Python虚拟环境virtualenv安装与使用的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05

最新评论