点击关注我哦

一篇文章带你了解矩阵乘法的纯Python实现

在《这篇文章》中,我们有简单提到“矩阵乘法”的相关知识,如果你不记得了,可以复习一下这张图片。

想起来了没?本篇文章将深入探讨在没有机器学习库的情况下如何从零实现矩阵乘法!

你有没有想过在没有任何复杂的机器学习库的情况下处理机器学习问题?毕竟多亏了那些模块,才可以让我们的某些操作几乎可以在眨眼之间完成。

为了真正欣赏这些模块的美观和优雅,让我们从头开始进行代码矩阵乘法,而无需任何机器学习库或模块。尽管这不是一个非常复杂的任务,但这将有助于我们更好地学习核心概念并理解NumPy的重要性,它只需几行代码即可完成同一任务。

解决这个问题的方法是从用户那里获取所有输入。这是第一个和第二个矩阵的行数和列数。另外,根据每个矩阵的行数和列数,我们将分别填充相应的替代位置。

在进行任何矩阵乘法之前,第一步是检查两个矩阵之间的这种运算是否真的可行。这可以通过检查第一个矩阵的列数是否等于第二个矩阵中的行数来判断。这可以表述为:

矩阵A的行数 = 矩阵B的列数

根据这个策略,我们可以制定我们的第一个代码块。这可以按如下所示:

r1 = int(input("Enter No of rows of 1st Matrix: "))c1 = int(input("Enter No of columns of 1st Matrix: "))r2 = int(input("Enter No of rows of 2nd Matrix: "))c2 = int(input("Enter No of columns of 2nd Matrix: "))# for matrix multiplication to be possible no of columns in matrix 1 = no of rows in matrix 2if c1==r2:else:    print("\nNot possible")

这部分看起来非常简单。我们制定了仅在需要时执行矩阵运算的计划。现在,让我们看一下如何接收相应行和列的输入。

在继续之前,让我们提出一个我们正在努力解决的问题。下图是我们必须解决的问题。我采用了一种更简单的3 * 3和3 * 3矩阵组合,但我保证这种方法可以解决任何复杂的问题,即第一个矩阵的列与第二个矩阵的行匹配。

下图显示了相应的行数和列数:

现在,我们还制定了问题陈述,让我们从用户那里获得所需的输入,然后开始着手解决这个问题。这可以使用下面的代码中完成:

    mat1 = []    mat2 = []    result = []    print("\nEnter The Values in the matrix 1: ")    for i in range(r1):        g=[]        for j in range(c1):            g.append(int(input()))        mat1.append(g)    for i in range(r1):         for j in range(c1):             print(mat1[i][j], end = " ")         print()

在这里,我展示了如何遍历行和列以输入第一个矩阵的值。同样,您也可以对第二个矩阵重复这些步骤。完成此步骤后,您的输出应如下所示:

现在我们已经成功地完成了所有必需的输入。是时候循环这些值并开始计算它们了。所以,为了阐明矩阵乘法是如何工作的,我们将行与它们各自的列相乘。

矩阵的第一个值如下所示:

(1*1) + (2*4) + (3*7) = (1) + (8) + (21) = 30

可以使用以下代码完成此操作:

    for r in range(r1):        u=[]        for s in range(c2):            u.append(int(0))        result.append(u)    for r in range(r1):         for s in range(c2):             result[r][s]    print("\nResult is: \n")    # iterate through rows of r1    for x in range(len(mat1)):       # iterate through columns of c2       for y in range(len(mat2[0])):           # iterate through rows of r2           for z in range(len(mat2)):                result[x][y] += mat1[x][z] * mat2[z][y]    for r in result:        print(r)

这段代码将相应地计算结果,然后得到最终输出,如下所示:

下图显示了已完成的相同计算。

现在,我们完成了与矩阵乘法的计算。但是,我很好奇这在numpy上如何工作。让我们看看——

使用Numpy的实现过程:

在仅使用python成功完成了矩阵乘法的工作之后,我们现在可以看看带有numpy模块的类似公式的样子。可以按照以下步骤进行:

import numpy as npa1 = np.array([[1,2,3],              [4,5,6],              [7,8,9]])a2 = np.array([[1,2,3],              [4,5,6],              [7,8,9]])Answer = np.matmul(a1,a2)Answer

通过对比发现:使用Numpy进行操作时,几乎没有太多个人的操作,我们只需要知道在numpy中是如何计算的即可。但是至少让我们了解到了一些新的东西:体会到我们使用的机器学习库是多么美妙。

结论:

我们发现,如果不使用现有的出色的机器学习库,即使是仅需几行代码即可完成的简单任务(如矩阵乘法),也将花费更长的时间来执行。但是,尽管如此,理解核心基础知识和理解这些操作是如何执行的仍然很重要,我们在本文中确实做到了这一点。在本文中,我们研究了如何在不使用任何库的情况下对矩阵乘法进行编程。

·  END  ·

HAPPY LIFE

python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!相关推荐

  1. python矩阵施密特标准型_矩阵与数值计算(3)——Schur标准型和Jordan分解

    前言 之前介绍过几种矩阵分解方法,都可以有效的提升矩阵方程的数值求解问题,其中LU分解尤其适合于中小型.稠密矩阵的求解问题.我们最理想的矩阵就是可相似对角化的矩阵,直接可以分解成两个酉矩阵和一个对角矩 ...

  2. python矩阵和向量乘积_矩阵与向量的乘积

    以下内容来源于:https://www.zhihu.com/people/August_666/posts 先上运算,再解读: 一个矩阵乘以一个列向量相当于矩阵的列向量的线性组合. 一个行向量乘以矩阵 ...

  3. 将矩阵转为一行_矩阵与矩阵乘积简介

    作者|Hadrien Jean 编译|VK 来源|Towards Data Science 原文链接:https://towardsdatascience.com/introduction-to-ma ...

  4. 一对矩阵的相关性_矩阵分析学习笔记(1)

    线性空间与线性映射 一.线性空间的概念: 记实数域 为 , 复数域为 , 统称数域 .设有一非空 集合记为 , 对集合 中的元素定义二元加法运算和数乘运算.(二元加法运算和数乘运算是一种线性映射,集合 ...

  5. python递归算法 电影院票价问题_算法课堂实验报告(二)——python递归和分治(第k小的数,大数乘法问题)...

    python实现递归和分治 一.开发环境 开发工具:jupyter notebook 并使用vscode,cmd命令行工具协助编程测试算法,并使用codeblocks辅助编写C++程序 编程语言:py ...

  6. python中系列的含义_一篇文章让你彻底搞清楚Python中self的含义

    刚开始学习Python的类写法的时候觉得很是麻烦,为什么定义时需要而调用时又不需要,为什么不能内部简化从而减少我们敲击键盘的次数? 你看完这篇文章后就会明白所有的疑问. self代表类的实例,而非类. ...

  7. python module是干什么的_如何最简单、通俗地理解Python的模块?

    目录: 一.笔记 二.笔记目录 一.笔记 1) 模块 ① Python模块(Module),是一个Python文件,以.py结尾,包含了Python语句和Python对象定义,模块让你能够有逻辑地组织 ...

  8. python实用脚本 知乎_停课不停学|38 个免费 Python 项目合集,从小白到老司机!...

    1665 年,牛顿在剑桥三一学院就读期间,伦敦发生了著名的鼠疫.这场鼠疫几乎摧毁了整个伦敦城,无论是下层人民还是王室贵族都难逃魔掌,几乎五分之一的伦敦人都在这场鼠疫中丧生. 牛顿被迫回家进行自我隔离, ...

  9. python怎么写出来的_如何写出优雅又地道的Python代码?【转载】

    在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic.一般说地道(idiomatic)的python代码,就是指这份代码很pyth ...

最新文章

  1. 最好用的嵌入式网络C库、Lua库
  2. C#Socket文件传输(发送与接收代码)
  3. .text 0.958之间居的中文汉化下载
  4. 微信小程序 获取OpenId
  5. 4 初学入门_2020年最新版,如何挑选入门级,进阶级和专业级网球拍(12月更新)...
  6. mysql5.6跳过密码登录_mysql-配置与使用(跳过原始密码登陆)
  7. MDT2012配置无人职守安装
  8. php程序员如何转go,写给 PHP 程序员的 Go 入门教程
  9. java 序列号怎么获取,Java获得硬盘和主板的序列号代码
  10. IDEA设置签名与导入主题
  11. python 读写+画图
  12. 【Jupyter Notebook】添加目录--Table of Contents
  13. 【干货】张小龙的30条产品法则
  14. 信息系统安全管理架构
  15. 副族元素从上到下原子半径_原子结构与原子半径.PPT
  16. c++|类静态成员之英雄类
  17. 人生必读的100本书隐私政策
  18. 机器学习-机器学习十大算法
  19. expdp导出时候遇到的ORA-39373问题
  20. Spring中开启组件扫描细节配置

热门文章

  1. aix linux操作系统,AIX--操作系统安装(AIX 6.1)
  2. yii mysql 主从_mysql主从同步实践 YII
  3. shocked的歌曲 类似shell_Shell Shocked歌词
  4. java httpserver 多个接口_多个Servlet之间数据共享实现方案
  5. php入口函数,php 常用的系统函数
  6. 移动架构-数据库分库和全版本升级
  7. 数据库如何进行索引优化
  8. 网络基础之 Nmap 命令
  9. JS 循环遍历 总结
  10. Ansible: hosts文件拆分为inventory和定义inventory全局变量