Python-01矩阵、数组和列表等的总结
python的基础知识总结
使用到了numpy库,所以第一步需要
import numpy as np
1.创建矩阵
1.1一般矩阵的创建
创建一个二维的矩阵,并使用ndim、shape、size分别获取矩阵的维度,大小,元素个数。
# 1)创建矩阵
a1 = np.array([[1,2,3],
[2,3,4]])
print("矩阵a1:\n",a1)
print("number of dimension:",a1.ndim)
print("shape:",a1.shape)
print('size:',a1.size)
# matrix 方式创建
a3 = np.matrix([[1,2,3],
[4,5,6]])
print("a3:\n",a3)
# mat方式
from numpy import *
data1 = mat(zeros((3,3)))#创建一个3*3的零矩阵
data2 = mat(ones( (2,4)) ) #创建一个 全1矩阵
data3 = mat(random.rand(2,2)) #这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成#matrix
data4 = mat(random.randint(10,size=(3,3))) # 10以内的随机3*3 矩阵
data5 = mat(random.randint(2,8,size=(2,6))) # 产生一个2-8之间随机整数的矩阵
data6 = mat(eye(2,2,dtype=int)) #产生一个2*2 的对角矩阵
# 对角矩阵
b = [1,2,3]
b1 = mat(diag(b)) # 生成一个对角线为1 2 3 的对角矩阵
print("对角矩阵为:\n",b1)
1.2特殊矩阵的创建
import numpy as np # 特殊矩阵的创建
# numpy 的类型 arange有序数列 linspace的使用
a = np.array([2,3,4],dtype=np.int32)
print(a.dtype)
b = np.arange(10,20,2)
print(b)
c = np.arange(12).reshape((3,4))
print(c)
d1 = np.linspace(1,20,10)
print(d1)
d2 = np.linspace(1,20,10).reshape((2,5))
print(d2) data1 = np.zeros((3,5))
print("全零矩阵:\n",data1)
data2 = np.ones((3,4),dtype=np.int16)
print("全一阵:\n",data2)
data3 = np.empty((3,4),dtype=np.float32)
print("empty:\n",data3)
2.矩阵的运算
# 矩阵的运算
print("# 矩阵的运算:")
c1 = mat([1,2,3])
c2 = mat([[1],[2],[3]])
c3 = c1*c2
print("矩阵乘运算结果:",c3) c4 = multiply(c1,c2)
print("矩阵对应元素相乘:\n",c4)
c5 = c1 * 2
print("矩阵扩大多少倍:",c5) # 矩阵的逆 转置
print("# matrix 求逆:")
d1 =mat(eye(2,2)*0.5)
d2 = d1.I #求矩阵得逆矩阵
print("矩阵的逆矩阵为:\n",d2)
d3 = d1.T
print("矩阵的转置:\n",d3)
# 矩阵的每一列、行的和
d4 = mat([[1,1],[2,3],[4,2]])
d5 = d4.sum(axis=0) #列求和
d6 = d4.sum(axis=1) #行求和
print("列求和:\n",d5)
print("行求和:\n",d6)
d7 = sum(d4[1,:]) #计算第一行所有列之和
d8 = sum(d4[:,1])# 矩阵行数 0 1 2行 列数 0 1 列
print("注意d4矩阵:",d7) # 2+3=5
print("注意d4矩阵:",d8) # 1+3+2=6 # 计算最大值和最小值 和索引
d9 = d4.max()
print("d4 matrix max:",d9)
d10 = max(d4[:,1]) #计算第二列的最大值
print("第二列最大值:",d10) #此方法得到的是矩阵
d11 = d4[1,:].max()
print("第二列最大值:",d11) # this way calclulate a number
d12 = np.max(d4,0) #计算所有列的最大值
print("所有列的最大值:",d12)
d13 =np.max(d4,1) #计算所有行的最大值
print("所有行的最大值:\n",d13)
d14 = np.argmax(d4,0) #计算所有列的最大值对应的索引
print("所有列最大值对应的索引:\n",d14)
d15 = np.argmax(d4[1,:]) #
print("第二行最大值对应改行的索引:",d15) e1 = mat([[1,2,3],[4,5,6],[7,8,9]])
e2 = e1[1:,1:] #分割出矩阵第二行,第二列以后的元素
print("矩阵的分割:\n",e2) e3 = mat(ones((2,2)))
e4 = mat(eye(2))
e5 = vstack((e3,e4)) #按列合并,增加了行数
print("矩阵列合并:\n",e5)
e6 = hstack((e3,e4))
print("矩阵的行合并:\n",e6) f1 = [[1],'hello',3] f2 = array([[1,2,3],[2,3,4]])
dimension = f2.ndim
m,n = f2.shape
number = f2.size #元素总数
str = f2.dtype #元素的类型
print("矩阵的维数:",dimension)
print("矩阵的行数和列数:",m,n)
print("矩阵元素总个数:",number)
print("元素的类型:",str)
3 矩阵、列表、数组之间转换
g1 = [[1,2],[3,2],[4,5]] #列表
g2 = array(g1) #将列表转化为二维数组
g3 = mat(g1) #将列表转化为矩阵
g4 = array(g3) #将矩阵转化为数组
g41 = g3.getA() #将矩阵转化为数组
g5 = g3.tolist() #将矩阵转化为列表
g6 = g2.tolist() #将数组转化为列表
print("列表:",g1)
print("数组:",g2)
print("矩阵:",g3)
print("矩阵转为数组:",g4)
print("矩阵转为数组:",g41)
print("矩阵转化为列表:",g5)
print("数组转化为列表:",g6)
Python-01矩阵、数组和列表等的总结的更多相关文章
- python数据结构:数组和列表
线性结构有两种:数组和列表 array和list 其中list各项操作的时间复杂度如下 因为insert是在头部插入 所以列表所有元素后移,时间复杂度为O(n) remove移除列表中某个值的第一个匹 ...
- python中的数组和列表
####转自:模式识别实验室主任 #环境win64+anaconda+python3.6 list & array (1)list不具有array的全部属性(如维度.转置等) 代码1: # ...
- PIE调用Python返回得到直方图矩阵数组
前段时间我研究了PIE SDK与Python的结合,已经能成功的通过C#调用Python,获得彩色直方图.(上一篇随笔中有分享:https://www.cnblogs.com/yuan1120/p/1 ...
- Python学习之数组类型一:
Python学习之数组类型一: Numpy中的向量与矩阵: 1.创建: 向量.矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ), 矩阵是M=array( [[ ]] ...
- 关于python中矩阵的实现和矩阵的转置
python中矩阵的实现是靠序列,,, 序列有很多形式, 其实矩阵是现实生活中的东西,把现实生活中的结构转换到程序中. 就需要有个实现的方法,而这种路径是多种多样的. 下面给出一个把矩阵转换成pyth ...
- python小白之数组索引
索引 numpy中的数组索引形式和Python是一致的.如: np.arange(10) print x[2] #单个元素,从前往后正向索引.注意下标是从0开始的. print x[-2] #从后 ...
- python学习笔记(一)、列表和元祖
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...
- python入门学习:2.列表简介
python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么 列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...
- Python基础(2)——列表、字典、数据运算
1.列表 #创建列表 name_list = ['alex', 'seven', 'eric'] #或 name_list = list(['alex', 'seven', 'eric']) #访问列 ...
随机推荐
- (五)pom文件详解
<?xml version="1.0" encoding="UTF-8"?> <!--是所有pom.xml的根元素,并且在里面定义了命名空间和 ...
- 用 Explain 命令分析 MySQL 的 SQL 执行
在上一篇文章<MySQL常见加锁场景分析>中,我们聊到行锁是加在索引上的,但是复杂的 SQL 往往包含多个条件,涉及多个索引,找出 SQL 执行时使用了哪些索引对分析加锁场景至关重要. 比 ...
- cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size
cb11a_c++_顺序容器的操作4 2 容器大小的操作 3 c.size() 容器当前的个数 4 c.max_size(),容器最大存储量 5 c.empty() 是否为空 6 c.resize(n ...
- Linux性能优化思路
性能测试的核心,就是找出性能瓶颈并进行性能优化,解决"慢"的问题,最终满足客户业务需求. [性能需求来源及性能问题现象] 性能需求的来源,主要分为以下几类: 项目组提出性能需求: ...
- Beta冲刺<10/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第十天(05.28) 作业正文 如下 其他参考文献 ... B ...
- 在Java虚拟机上班是一种怎样的体验?
228 人赞同了该回答 利益相关,匿了! JVM公司里面线程众多,派系林立,尤其是执行引擎那波人,因为是核心部门,经常diss别的部门. 428 人赞同了该回答 不请自来. 其实在JVM工作没有你们想 ...
- 提交代码到gitbub.com
提交代码到gitbub.com touch README.md //新建说明文件 git init //在当前项目目录中生成本地git管理,并建立一个隐藏.git目录 git add . //添加当前 ...
- centos 6.5 nat方式上网络设置
1 前提虚拟机采用nat的方式和主机进行通信,这个时候再电脑上会模拟一个vmnet8网卡,如果是host-only对应的是vmnet1,配置一样 vmnet8的虚拟网卡,虚拟机通过vmnet8和主机之 ...
- MySQL 合并查询,以map或对象的形式返回
转载 CSDN博主「小林子林子」 -> https://blog.csdn.net/qq_26106607/article/details/84961254 原始SQL-> 目的-> ...
- 前端开发神器Charles从入门到卸载
前言 本文将带大家学习使用前端开发神器-charles,从基本的下载安装到常见配置使用,为大家一一讲解. 一.花式夸奖Charles 截取 Http 和 Https 网络封包. 支持重发网络请求,方便 ...