技术标签: python矩阵运算函数
以前总认为Numpy是渣渣,直到深入接触以后才知道功能这么强大。堪比Matlab啊。果然是人生苦短,我用Python。所以本文作为一个记录&笔记,文章内容大多数取自网络以&官网快速入门等(文末有参考链接,如有侵权请联系本人改正),希望可以帮助大家快速入门Numpy。如果你有Matlab基础,那么你能很快看懂本文!!!
一个栗子
创建矩阵
对于Python中的numpy模块,一般用其提供的ndarray对象。 创建一个ndarray对象很简单,只要将一个list作为参数即可。 例如:
矩阵行数列数
矩阵按行列选取
矩阵的截取和list相同,可以通过[](方括号)来截取
矩阵按条件截取
按条件截取应用较多的是对矩阵中满足一定条件的元素变成特定的值。 例如将矩阵中大于6的元素变成0。
Stacking together different arrays
矩阵的合并可以通过numpy中的hstack方法和vstack方法实现:
矩阵的合并也可以通过concatenatef方法。
np.concatenate( (a1,a2), axis=0 ) 等价于 np.vstack( (a1,a2) )
np.concatenate( (a1,a2), axis=1 ) 等价于 np.hstack( (a1,a2) )
通过函数创建矩阵
arange
linspace/ logspace
ones、zeros、eye、empty
ones创建全1矩阵 ,zeros创建全0矩阵 ,eye创建单位矩阵 ,empty创建空矩阵(实际有值)
fromstring
fromstring()方法可以将字符串转化成ndarray对象,需要将字符串数字化时这个方法比较有用,可以获得字符串的ascii码序列。
random
fromfunction
fromfunction()方法可以根据矩阵的行号列号生成矩阵的元素。 例如创建一个矩阵,矩阵中的每个元素都为行号和列号的和。
矩阵的运算
常用矩阵运算符
Numpy中的ndarray对象重载了许多运算符,使用这些运算符可以完成矩阵间对应元素的运算。
运算符说明+矩阵对应元素相加-矩阵对应元素相减*矩阵对应元素相乘/矩阵对应元素相除,如果都是整数则取商%矩阵对应元素相除后取余数**矩阵每个元素都取n次方,如**2:每个元素都取平方
常用矩阵函数
同样地,numpy中也定义了许多函数,使用这些函数可以将函数作用于矩阵中的每个元素。 表格中默认导入了numpy模块,即 。a为ndarray对象。
常用矩阵函数说明np.sin(a)对矩阵a中每个元素取正弦,sin(x)np.cos(a)对矩阵a中每个元素取余弦,cos(x)np.tan(a)对矩阵a中每个元素取正切,tan(x)np.arcsin(a)对矩阵a中每个元素取反正弦,arcsin(x)np.arccos(a)对矩阵a中每个元素取反余弦,arccos(x)np.arctan(a)对矩阵a中每个元素取反正切,arctan(x)np.exp(a)对矩阵a中每个元素取指数函数,exnp.sqrt(a)对矩阵a中每个元素开根号
当矩阵中的元素不在函数定义域范围内,会产生RuntimeWarning,结果为nan(not a number)
矩阵乘法(点乘)
矩阵乘法必须满足矩阵乘法的条件,即第一个矩阵的列数等于第二个矩阵的行数。 矩阵乘法的函数为 dot 。
矩阵的转置 a.T
矩阵的转置还有更简单的方法,就是a.T。
矩阵的逆
设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得:AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。
求矩阵的逆需要先导入,用的函数来求逆。矩阵求逆的条件是矩阵应该是方阵。
矩阵信息获取(如均值等)
最值
获得矩阵中元素最大最小值的函数分别是和,可以获得整个矩阵、行或列的最大最小值。
平均值
获得矩阵中元素的平均值可以通过函数。同样地,可以获得整个矩阵、行或列的平均值。
方差
方差的函数为,方差函数相当于函数,其中x为矩阵。
标准差
标准差的函数为。 相当于,或相当于。
中值
中值指的是将序列按大小顺序排列后,排在中间的那个值,如果有偶数个数,则是排在中间两个数的平均值。中值的函数是median(),调用方法为numpy.median(x,[axis]),axis可指定轴方向,默认axis=None,对所有数取中值。
求和
矩阵求和的函数是sum(),可以对行,列,或整个矩阵求和
累积和
某位置累积和指的是该位置之前(包括该位置)所有元素的和。例如序列[1,2,3,4,5],其累计和为[1,3,6,10,15],即第一个元素为1,第二个元素为1+2=3,……,第五个元素为1+2+3+4+5=15。矩阵求累积和的函数是cumsum(),可以对行,列,或整个矩阵求累积和。
极差
百分位数
序号参数及描述1. 输入数组2. 要计算的百分位数,在 0 ~ 100 之间3. 沿着它计算百分位数的轴
加权平均值
Shape Manipulation
Changing the shape of an array
数组的形状可以用以下方式改变。Note that the following three commands all return a modified array, but do not change the original array:
The function returns its argument with a modified shape, whereas the method modifies the array itself:
If a dimension is given as -1 in a reshaping operation, the other dimensions are automatically calculated:
Splitting one array into several smaller ones
Using , you can split an array along its horizontal axis, either by specifying the number of equally shaped arrays to return, or by specifying the columns after which the division should occur:
Copies and Views
When operating and manipulating arrays, their data is sometimes copied into a new array and sometimes not. This is often a source of confusion for beginners. There are three cases:
No Copy At All
a = b,改变b就相当于改变a,或者相反。
View or Shallow Copy
Different array objects can share the same data. The method creates a new array object that looks at the same data.
Slicing an array returns a view of it:
Deep Copy
The method makes a complete copy of the array and its data.
关于有三种情况,完全不复制、视图(view)或者叫浅复制()和深复制()。而就属于第二种,即视图,这本质上是一种切片操作(),所有的切片操作返回的都是视图。具体来说,会创建一个新的对象(所以说 id 和不一样),但是的数据完全来自于,和保持完全一致,换句话说,b的数据完全由a保管,他们两个的数据变化是一致的,可以看下面的示例:
和 的差别就在于后者会创建新的对象,前者不会。两种方式都会导致和的数据相互影响。要想不让的改动影响到,可以使用深复制:
曼德勃罗
如果maven { url 'https://maven.google.com' }用不了,可以替换为:maven { url 'https://dl.google.com/dl/android/maven2/' }试试。参考:maven { url ‘https://maven.google.com’ } VS google()解决 maven { url ‘https://maven.google.com’ } 用不了的情况google()和maven{ url ‘https://m
彻底解决Qt中文乱码,彻底解决Cocos2d-x中文乱码问题
在Python中,列表(List)是最常用的Python数据类型之一,可以作为一个方括号内的逗号分隔值出现。本文详细讲解列表的创建、访问、更新、删除、截取和列表函数等知识。
我的笔记本是win7 32位。1 首先安装python3.6.3,2017年10月才出的版本,够新。 下载网址:https://www.python.org/downloads/release/python-363/。 2 确保Microsoft Visual C++ 2015 Redistributable和python相对应的版本。 下载地址:https://www.microsoft.c
一迷宫功能1 小球行走的路径,和程序员设置的找路策略有关。即和找路的上下左右的顺序相关。2求解小球路径时,可以使用(下右上左,即逆时针顺序)策略,也可以使用(上右下左,即顺时针)策略,不同的策略找到的路径是不同的。3在求解过程中,某些场景下会出现回溯现象。回溯过程需要好好理解。二代码package com.atguigu.recursion;/*** @className: MiGong* @description: 用递归求解迷宫问题* @date: 2021/...
sqlite3移植所需的文件系统支持,采用的VFS接口,只实现了一些基本接口,对于属性与权限接口则未实现具体功能,由于FATFS文件系统没有权限管理,VFS主要是linux上面使用的,这里还是有区别,而且裸机情况下也不需要什么权限管理。需要用户堆支持。ff_vfs.c/************************************************************************************************************* *.
在测试工具 app 中进行某一项测试时,界面突然挂了。分析日志,发现日志中 crash 的地方是输入法?喵喵喵!? 总的来说,报错日志像下面这样://log...01-25 18:19:23.050 W/ActivityManagerService( 442): Duplicate finish request for ActivityRecord{6...
描述:Certainly, everyone is familiar with tic-tac-toe game. The rules are very simple indeed. Two players take turns marking the cells in a3 × 3grid (one player always draws crosses, the other — noughts). The player who succeeds first in placing three of..
一.初始Java异常对异常的理解:异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)Java程序在执行过程中所发生对异常事件可分为两类:Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性 的代码进行处理。Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:空指针访问试图读
本文同时发表于 ThoughtWorks洞见。不一样的旅程ThoughtWorks是一家极具创造力的公司,在这里,人才是最重要的资产。如果你以应届生的身份加入TW,你将获得5周的出国留学机会(ThoughtWorks University,简称TWU),如果你通过社招加入TW,你会获得为期三天的TWI。除了TWU、TWI,TW还提供诸如NHO、Session、Workshop、Buddy/...
1 离线安装1.1 获取安装包 前往包的总地址进行下载(搜索VSFTP,并下载对应的版本)。本次使用的是CentOS 7的vsftpd-3.0.2-25.el7.x86_64.rpm版本,点击RPM包可直接进行下载。 安装VSFTP还需要用到FTP的环境,本次使用的是CentOS 7的ftp-0.17-67.el7.x86_64.rpm版本,点击RPM包可直接进行下载。1.2 安装VS...
Oracle异常分预定义异常和自定义异常(个人觉得)。预定义异常里面包括匿名异常和非匿名异常。(匿名异常:没有名称,像ORA-00371;非匿名异常:有名称,像no_data_found)。自定义异常:需要声明,与业务相关。异常的抛出用raise。在exception捕获后,可以向上继续raise抛出。在exception代码块捕获后,如果想把异常反应给应用程序,使用raise_applicati...