Python 中矩阵运算主要使用numpy库。NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数索引的元素表格(通常是元素是数字)。因此对于随机查找来说,比python自带的list快很多。

  在numpy里面通常使用两个变量:array和matrix。其实python标准类库中也有array,但是它的功能相对numpy的少很多,所以不用。matrix是array的分支,matrix可以看做二维的array,array可以是多维,matrix和array在很多时候都是通用的。官方建议如果两个都可以用,那就选择array,因为array更灵活,速度更快,很多人把二维的array也翻译成矩阵。但是matrix的优势在于,它相对于array使用的符号更简洁一些。

矩阵和向量的创建

  a = np.array([2,4,5,6,7])

  如上创建了一个1*5的一行5列的array,这就相当于一个行向量(实际上不是,应该用np.array([[2,4,5,6,7]])创建)。
  m = np.matrix([[1,2,4,5,6],[5,6,8,9,4]])

  如上创建了一个2*5的matrix,这就是一个2*5的矩阵。

  另外矩阵还可以通过这个创建:
  m = np.mat([[1,2,4,5,6],[5,6,8,9,4]])

  mat和matrix的相关之处是,mat([])就等同于matrix([],copy=false),而matrix([])实际上默认copy=true。

  所以如果想引用一个矩阵,如m,可以使用a = mat(m),或者a = matrix(m,copy=false)。当然用[]列表来新创建一个矩阵的时候它们是完全一样的。

矩阵的转置

  m = m.transpose()

  m = m.T

  matrix和除一维外的array(甚至高维,尽管不清楚转置机制,但暂时用不上所以先不研究)可以通过这个两个进行转置(T和transpose不同点暂时不研究了)。

  但是一维的array,它不是矩阵,也不是向量,所以不能通过transpose来转置。

  因为在计算机里,二维和一维定义好以后就确定下来用几个索引标志来索引了。

  而向量从功能上来看,应该被看做1行或1列的矩阵,所以它应该是二维的。就是说我们索引它的某个元素,比如行向量a的第3个元素,我们应该用a[1][3],而不是a[3]。

  所以a = np.array([2,4,5,6,7])创建的其实啥也不是,像np.array([[2,4,5,6,7]])这样创建二维的才算真正意义上的行向量,也就能用transpose()来转置了。

  如果用a = np.array([2,4,5,6,7,1,3,8])创建了一行数组a,想变成向量,就用reshape()函数来将它变成二维的向量。

reshape()函数

  a = a.reshape([1,8])

  把a转换为了二维的1行8列的行向量,即使a原来是一维数组。
  a = a.reshape(8)

  这样就又转回了原来一维的8元素的数组。   

  甚至还可以a = a.reshape([2,2,2])

  变成了2*2*2的三维的立方阵。

  另外,如果赋值给一个新变量:

  b = a.reshape([2,2,2])

  a的shape没变,b是2*2*2的立方阵,而且它们共享内存,即a改变它的元素值,b也会改变。

矩阵乘法

  乘法有三种表达方式:*、dot()、multiply()

np.multiply()

  数组或矩阵的对应位置元素相乘。

np.dot()

  对于一维数组array,执行对应位置相乘,然后再求和;对于秩不为1的二维数组(array)、矩阵(matrix),执行矩阵乘法运算(超过二维的可以参考numpy库介绍)

乘法运算*

  对数组array执行对应位置元素相乘(相当于 np.multiply() 函数),对矩阵matrix执行矩阵乘法运算(相当于 np.dot() 函数)。就是multiply()和dot()的融合。

幂运算**

  相当于多个array或matrix执行*,即A**3=A*A*A。

总结

  multiply()全都是对应元素相乘;dot()是矩阵乘法,而一维array是对应元素相乘后之和;*对array是对应元素相乘,对matrix是矩阵乘法。

  相对来说matrix注重矩阵操作,array注重阵列操作(阵中元素对应进行运算)

Python 矩阵相关的更多相关文章

  1. Numpy使用大全(python矩阵相关运算大全)-Python数据分析基础2

    //2019.07.10python数据分析基础——numpy(数据结构基础) import numpy as np: 1.python数据分析主要的功能实现模块包含以下六个方面:(1)numpy—— ...

  2. python数组相关知识

    1.np中的reshape函数,可以把矩阵重新划分成m行n列. arange(n)可以把 [0,n-1]装入数组中,一定要注意的是img.reshape()并不会改变原来的数组,所以需要另外新建一个数 ...

  3. python文件相关操作

    Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...

  4. Mac os 下 python爬虫相关的库和软件的安装

      由于最近正在放暑假,所以就自己开始学习python中有关爬虫的技术,因为发现其中需要安装许多库与软件所以就在这里记录一下以避免大家在安装时遇到一些不必要的坑. 一. 相关软件的安装:   1. h ...

  5. Python内存相关

    Python内存相关 示例一: v1 = [1, 2, 3] v2 = [1, 2 ,3] v1 = 123 v2 = 123 v1 = "dogfa" v2 = "do ...

  6. Python 矩阵(线性代数)

    Python 矩阵(线性代数) 这里有一份新手友好的线性代数笔记,是和深度学习花书配套,还被Ian Goodfellow老师翻了牌. 笔记来自巴黎高等师范学院的博士生Hadrien Jean,是针对& ...

  7. python 日期相关的各种操作总结

    用 Python 做项目时,经常会遇到与日期转换相关,日期计算相关的功能,动不动就要去查python手册,感觉麻烦,因此把自己常用的一些东西,总结了一下,总体说来到目前为止遇到如下一些需求: 1. 用 ...

  8. Python 异常相关参考

    Python所有的异常都是从BaseException类派生的,常见的错误类型和继承关系如下: BaseException +-- SystemExit +-- KeyboardInterrupt + ...

  9. Python编写相关注意事项

    1.# -*- coding: utf-8 -*-代码首部添加这个,不然会报Non_ASCII charater错误 python闭包:实际应用场景1.保持闭包运行完后的环境: 2.根据外部作用域的局 ...

随机推荐

  1. 页面阻止某个按键的键盘事件(event.stopPropagation与event.preventDefault的区别及如何兼容IE8)

    http://blog.csdn.net/rocklee/article/details/53160656

  2. 【原】mac电脑使用总结

    mac下终端配置(item2+oh-my-zsh)+solarized配色方案:https://www.cnblogs.com/weixuqin/p/7029177.html

  3. Update(stage3):第1节 redis组件:7、持久化

    7.redis的持久化 由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式, ...

  4. Mac 如何导出ipa文件中Assets.car包中的切图

    在之前 获取 AppStore 中 应用 的 IPA 包文件(Mac OS 13+)中获取到应用的 IPA 包,可以取出应用的部分图片(如 Logo),如果项目工程中把图片添加到 Assets.xca ...

  5. Math 用法

    console.log(Math.abs(-5)) 取绝对值 console.log(Math.round(5.1)) 取四舍五入 5.5 为中间值 取5 console.log(Math.ceil( ...

  6. missing required architecture x86_64 in file

    ios错误ignoring file xxx missing required architecture x86_64 in file   错误ignoring file xxx missing re ...

  7. Redis的人门以及使用

    1.Redis的安装 1.1centos下安装Redis 1.1.1 安装gcc 1.1.2 安装过程  图一 图三 2.Redis的启动 2.1 前端模式启动(不推荐) 截图 2.2 后端模式(推荐 ...

  8. Python 中命令行参数解析工具 docopt 安装和应用

    什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制. ...

  9. 微信小程序 列表倒计时

    最近要实现一个列表倒计时的功能,写了个demo 展示图 <view class="center colu"> <view class="time&quo ...

  10. MD5摘要

    MD5简介 MD5即Message-Digest Algorithm 5(信息-摘要算法),属于摘要算法,是一个不可逆过程,就是无论多大数据,经过算法运算后都是生成固定长度的数据,结果使用16进制进行 ...