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的单位矩阵

  1. 访问和修改数组形状

访问:用reshape函数或者数组属性shape 来访问

数组的形状是元组,例如n*m的矩阵的形状是元组(n,m)

矩阵:shape(A)  #返回矩阵的形状(n,m)

向量:shape(v)   #返回(n, )  注意:向量形状是包含向量长度n的单元素元组

修改数组形状:是指在不复制数据的情况下给出数组的新视图。

  1. 重塑: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))

  1. 转置  矩阵转置与向量有所区别:

例如: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学习之数组类型一:的更多相关文章

  1. Python学习--03变量类型

    变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创 ...

  2. Python学习心得--变量类型篇

    1.Python允许同时为多个变量赋值.例如:a = b = c = 1 2.Python允许多个对象指定多个变量.例如:a1, b1, c1 = 1, 2, "john" 3.使 ...

  3. python学习之基本类型

    #我的第一个python程序 print("hello world"); #多行字符串 print("""\ Usage: thingy [OPTIO ...

  4. python学习之变量类型

    变量: 变量是保存在内存中的值,根据变量类型开辟不同的内存空间且只允许符合该数据类型的数据才可以被存储在该内存空间中 变量赋值: 在Python中定义变量时,无需像其他语言一样需要声明数据类型.每个变 ...

  5. Python学习之==>数组(二)

    1.切片 # 切片:是list取值的一种方式 nums = ['段佳琳','陈伟良','王占宇','李波','韶钢'] print(nums[1:3]) # 顾头不顾尾,不包含后面下标的元素 prin ...

  6. Python学习之==>数组(一)

    1.定义数组 city = [] # 定义一个空数组 name = ['Jack','Panda','Bob','Franck'] # 根据下标找元素,最前面一个元素的下标是0,最后一个元素下标是-1 ...

  7. Mooc中国大学Python学习笔记--数字类型及操作

    整数类型 只需知道整数无限制,pow(),4进制表示形式 与数学中整数的概念一致 --可正可负,没有取值范限制 --pow(x,y)函数:计算x^y,想算多大算多大 -十进制:10 -二进制,以0b或 ...

  8. Python学习笔记——集合类型

    集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset) 可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素 不可变集合是有哈希值的,能被用做字典的键或者是作为 ...

  9. [Python学习笔记] 数字类型及操作

    数字类型 整数类型 十进制:1110,-123 二进制:以0B或0b开头 0b110,-0B101 八进制:以0O或0o开头 0o123,-0O567 十六进制:以0X或0x开头 0x555,-0X8 ...

随机推荐

  1. 如何配置JVM系统属性及获取方式System.getProperty("pname")

    https://www.cnblogs.com/keyi/p/7721893.html

  2. WebSocket学习与使用

    1.WebSocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议,其目的是在浏览器和服务器之间建立一个不受限的双向通信的通道,使得服务器可以主动发送消息给浏览器.在HTML ...

  3. 消息中间件系列三:使用RabbitMq原生Java客户端进行消息通信(消费者(接收方)自动确认模式、消费者(接收方)自行确认模式、生产者(发送方)确认模式)

    准备工作: 1)安装RabbitMQ,参考文章:消息中间件系列二:RabbitMQ入门(基本概念.RabbitMQ的安装和运行) 2.)分别新建名为OriginalRabbitMQProducer和O ...

  4. KMP,深入讲解next数组的求解(转载)

    前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k:但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导 ...

  5. SwipeToLoadLayout

    SwipeToLoadLayout SwipeToLoadLayout is a reusable pull-to-refresh and pull-to-load-more widget. Supp ...

  6. Git文件常见下标符号说明

    Git文件常见下标符号说明 git是一种分布式的版本控制工具.     不用联网也能实现版本控制,很实用. 它是一款现在比较流行的版本控制工具. git的文件上的图标,可以反映出当前文件或者文件夹的状 ...

  7. Qt编写自定义控件6-指南针仪表盘

    前言 指南针仪表盘,主要用来指示东南西北四个方位,双向对称两个指针旋转,其实就是360度打转,功能属于简单型,可能指针的绘制稍微难一点,需要计算多个点构成多边形,本系列控件文章将会连续发100+篇,一 ...

  8. Java应用之POI

    POI的简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF的概况 HSSF 是Horr ...

  9. dataTransfer对象

    HTML5拖拽的数据传输 虽然通过dragstart.drag和dragend事件实现了原生拖拽.但是这仅仅是拖拽,在IE6和IE7中还是有些拖拽问题,并且也没有实现数据的交换.为了实现数据的交换,I ...

  10. Golang自定义包导入

    # 文件Tree project -/bin -/pkg -/src -main.go -/test -test1.go -test2.go main.go package main import ( ...