Python学习之数组类型一:
Python学习之数组类型一:
Numpy中的向量与矩阵:
1.创建: 向量、矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ),
矩阵是M=array( [[ ]] ) 注意矩阵是双方括号
向量可以执行基本的线性代数运算(运算是基于元素的运算),例如标量乘法/除法、线性组合、范数、标量积等。
2.访问数组项: 向量索引与切片类似于字符串与列表
通过索引访问矩阵(数组项),需要两个索引来访问,这些索引都在一对方栝号里。 例如:M[2:4,1:4] 表示行与列的切片
一些切片原则:
矩阵[index,index] 得到维数为0的标量
矩阵[索引,切片]或者[切片,索引] 得到维数为1的向量
矩阵[切片,切片] 得到维数为2的矩阵
使用切片修改(替换)矩阵中的一个元素,一整行,整个子矩阵。
3.数组构造函数:----用于一些构造数组的命令生成特殊的矩阵。
v=array([3.,5.,8.])
① I=diag(v,0) #diag(v,k) 生成的结果是来自向量V的对角n阶方阵,前k列元素均为零
print(I)
② T=zeros((2,2,3)) #张量T(向量、矩阵或更高阶张量)的函数ndim给出的维数总是等于其形状的长度
print(T)
print(ndim(T)) #使用数组属性T.ndim或者函数numpy.nidm 来获取数组的维数
print(shape(T)) #数组属性:shape获取数组的维度 例如(2,3)表示二行三列矩阵
print(len(shape(T)))
③ A=ones((2,3)) #生成的是由1填充的2行3列的矩阵
print(A)
④ T=random.rand(3,3) #random.rand(n,m) 生成由(0,1)中平均分布的随机数(填充)构成的n行m列矩阵
print(T)
⑤ A=arange(3) #arange(n)返回元素为前n个整数的向量
print(A)
⑥ v=linspace(1,2,4) #linspace(a,b,n)生成由平均分布在a与b之间的n个点组成的向量
print(v)
⑦ I=identity(n) #生成阶数为n的单位矩阵
- 访问和修改数组形状
访问:用reshape函数或者数组属性shape 来访问
数组的形状是元组,例如n*m的矩阵的形状是元组(n,m)
矩阵:shape(A) #返回矩阵的形状(n,m)
向量:shape(v) #返回(n, ) 注意:向量形状是包含向量长度n的单元素元组
修改数组形状:是指在不复制数据的情况下给出数组的新视图。
- 重塑:reshape()函数
例如:
v=array([0,1,2,3,4,5])
M=v.reshape(2,3) #reshape()函数在不复制数据的情况下给出了一个数组的新视图
#将向量v生成一个二行三列的矩阵
print(M)
print(shape(M)) #返回(2,3)
M[0,0]=10
print(v) #v=[10,1,2,3,4,5]现在的v[0]是10 注意:更改M中的M中的一个元素导致v
#中相应的元素自动地发生变化。
v=array([1,2,3,4,5,6,7,8])
M=v.reshape(2,-1) #仅指定一个形状也很方便,并让python以与原始形状相乘的方式来确定另一个形状参数
#通过设置自由形状参数-1来实现
print(shape(M)) #返回(2,4)两行四列的矩阵
print(M)
M=v.reshape(-1,2)
print(shape(M)) #返回形状(4,2)的矩阵
print(M)
M=v.reshape(3,-1) #如果尝试不与初识形状值相乘的形状的数组,则返回错误
print(shape(M))
- 转置 矩阵转置与向量有所区别:
例如:A = array([[1.,2.],[3.,4.]])
B=A.T #转置矩阵用 矩阵.T即(A.T)来切换矩阵的两个形状元素
print(A)
print(B)
A[1,1]=5.
print(B[1,1]) #返回5
注意:v.T返回相同的向量
v=array([1.,2.,3.]) #转置向量,使用---向量.reshape()---来实现
print(v.T)
print(v.reshape(1,-1)) #v的行向量
print(v.reshape(-1,1)) #返回v的列向量
2.叠加:
#叠加 concatennate()方法
a1=array([[1.,2.,3.],[4.,5.,6.]])
a2=array([[0.,1.,3.],[7.,8.,9.]])
A=concatenate((a1,a2),axis=1) #构造矩阵的通用方法concatenate((a1,a2,...),axis=0/1)
print(A) #前提是用一对相匹配的子矩阵,axis=0时,子矩阵垂直叠加;axis=1时,子矩阵水平叠加
#假设有一个长度为2n的向量,要对具有偶数个分量的向量执行偶排列
v=array([0,1,2,3,4,5,6,7,8,9])
def symp(v):
n=len(v)//2
return hstack([v[-n:],-v[:n]])
print(symp(v)) #将符号变化的向量的前半部分和后半部分进行交换
Python学习之数组类型一:的更多相关文章
- Python学习--03变量类型
变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创 ...
- Python学习心得--变量类型篇
1.Python允许同时为多个变量赋值.例如:a = b = c = 1 2.Python允许多个对象指定多个变量.例如:a1, b1, c1 = 1, 2, "john" 3.使 ...
- python学习之基本类型
#我的第一个python程序 print("hello world"); #多行字符串 print("""\ Usage: thingy [OPTIO ...
- python学习之变量类型
变量: 变量是保存在内存中的值,根据变量类型开辟不同的内存空间且只允许符合该数据类型的数据才可以被存储在该内存空间中 变量赋值: 在Python中定义变量时,无需像其他语言一样需要声明数据类型.每个变 ...
- Python学习之==>数组(二)
1.切片 # 切片:是list取值的一种方式 nums = ['段佳琳','陈伟良','王占宇','李波','韶钢'] print(nums[1:3]) # 顾头不顾尾,不包含后面下标的元素 prin ...
- Python学习之==>数组(一)
1.定义数组 city = [] # 定义一个空数组 name = ['Jack','Panda','Bob','Franck'] # 根据下标找元素,最前面一个元素的下标是0,最后一个元素下标是-1 ...
- Mooc中国大学Python学习笔记--数字类型及操作
整数类型 只需知道整数无限制,pow(),4进制表示形式 与数学中整数的概念一致 --可正可负,没有取值范限制 --pow(x,y)函数:计算x^y,想算多大算多大 -十进制:10 -二进制,以0b或 ...
- Python学习笔记——集合类型
集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset) 可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素 不可变集合是有哈希值的,能被用做字典的键或者是作为 ...
- [Python学习笔记] 数字类型及操作
数字类型 整数类型 十进制:1110,-123 二进制:以0B或0b开头 0b110,-0B101 八进制:以0O或0o开头 0o123,-0O567 十六进制:以0X或0x开头 0x555,-0X8 ...
随机推荐
- hdoj:2084
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- python中的if __name__ == 'main'
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用: 对于编程语言来说,程序都必须要有一个入口,比如java和c#必须要 ...
- ajax方法如何给全局变量赋值
在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:t ...
- [hadoop] kettle spoon 基础使用 (txt 内容抽取到excel中)
spoon.bat 启动kettle. 测试数据 1. 新建转换 输入中选择文本文件输入 双击设置文本输入 字符集.分隔符设置 获取对应的字段,预览记录. 拖入 excel输出,设置转换关系 设置输出 ...
- maven jdk 版本配置
一种是配置 pom.xml,一种是配置 settings.xml. 方式一:settings.xml 配置 打开 %maven%/conf/settings.xml 文件并编辑它(%maven% 表示 ...
- Factory——工厂方法
一.定义 GOF上对工厂方法的意图如此描述:定义一个用于创建对象的接口,让子类决定实例化哪个类.Factory Method使一个类的实例化延迟到其子类. 作为类的开发者,我们通常会在类中提供构造器方 ...
- 解决Pycharm更新package出现的问题:AttributeError:module 'pip' has no attribute 'main'
很久一段时间没有更新Pycharm当中的package了,今天打开Pycharm点击package更新,发生了错误,AttributeError:module 'pip' has no attribu ...
- ArcGIS map preview in Power BI service
登录PowerBI网站:www.powerBI.com 点[设置],如下图: 找到[适用PowerBI的ArcGIS地图(预览)] 点击[应用]即可. 打开PowerBI DestTop客户端,找 ...
- PHP利用get_headers()函数判断远程的url地址是否有效
问题: 利用url访问远程的文件.图片.视频时有时需要请求前判断url地址是否有效. 解决办法: (PHP 5, PHP 7) get_headers — 取得服务器响应一个 HTTP 请求所发送的所 ...
- java 的访问权限控制
package test06; public class PermissionModel { private int age; public String name; public int getAg ...