博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
六. numpy数据矩阵
阅读量:6171 次
发布时间:2019-06-21

本文共 5307 字,大约阅读时间需要 17 分钟。

numpy 数据(矩阵模块)

 

种开源的数值计算扩展库.这种库可用来存储和处理大型矩阵,比python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩 https://www.runoob.com/numpy/numpy-tutorial.html 比较一下 nu.array 和 list 的区别 np.array是多维的,list是一维的 list对一维数组做一些操作,numpy其实就是对多维做操作 .计算速度快,甚至优于python内置的简单运算,使其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似 矩阵即numpy的np.array对象,创建矩阵就是把==列表==传入np.array()
import numpy as nu  # 数据矩阵
# 一维矩阵arr1 = nu.array([1, 2, 3])print(arr1)# [1 2 3]# 只有一行# 相当于一条直线
print("************************二维对象**********************************")#二维对象arr2 = nu.array([[1, 2, 3], [4,5,6]])print(arr2)# 有行有列# 相当于一个面,里面有多条线,一个列表里装了多个一维# 二维数组(用的最多的)
print("************************创建三维的ndarray对象**********************************")#创建三维的ndarray对象arr3 = nu.array([[[1, 2, 3],                  [3,2,1]],                  [[4,5,6],                  [6,5,4]]])print(arr3)
print("***********************shape(查看ndarray对象的形式)***********************************")# shape(查看ndarray对象的形式)arr4=nu.array( [[1, 2, 3, 4],               [5, 6, 7, 8],               [5, 6, 7, 8]])print(arr4)# [[1 2 3 4]#  [5 6 7 8]#  [5 6 7 8]]cc=arr4.shape    #获得多维数组的行和列,以元组形式表现出来print(cc)       # (3, 4)   # (矩阵的行数,矩阵的列数)print(arr4.shape[0])    # 获取行  3print(arr4.shape[1])   # 获取列   4
print("**************************切分工具********************************")# 2.切分工具arr5=nu.array([ [1, 2, 3, 4],                [5, 44, 88, 8],                [5, 6, 7, 8]])print(arr5[2,3])  #  行和列索引都从0开始,取第2行第3列               # 8print(arr5[0,:])  #第一行,第1,2,3,4列的数# [1 2 3 4]print(arr5[:,0]) #所有行,第1列的数# [1 5 5]print(arr5[0:])   # 没有逗号的时候取出了全部# [[1 2 3 4]#  [5 6 7 8]#  [5 6 7 8]]print(arr5[1,1:3]) #取第二行第第二个和第三个# [44 88]print(arr5[arr5>3])#取大于3的值# [ 4  5 44 88  8  5  6  7  8]#取第第一列大于3的值arr_lien = arr5[:,0]print(arr_lien[arr_lien>3])   # [5 5]# 有一个多维数组存储的是人的年龄,表格里有200岁以上的年龄arr6 = nu.array([ [1000,2,300,4],[5,600,7,8],[5,6,700,8]])# arr>200"""array([[ True, False,  True, False],       [False,  True, False, False],       [False, False,  True, False]])"""print(arr6[arr6>200])      # [1000  300  600  700]
print("**************************多维数组的元素的替换********************************")# 多维数组的元素的替换arr7=nu.array([ [1, 2, 3, 4],                [5, 44, 88, 8],                [5, 6, 7, 8]])cc=arr7[1,2]=666print(arr7)#数组中大于30的数替换成了99bb=arr7[arr7>30]=99print(bb)print(arr7)# 所有行,第1列的数  修改成11dd=arr7[:,0]=11print(dd)print(arr7)
print("**************************多维数组的合并********************************")# 多维数组的合并arre = nu.array([[1, 2, 3],[4,5,6]])arrr = nu.array([[3, 2, 4],[5,3,7]])#vertical 垂直新的l=nu.vstack((arre,arrr))print(l)#horizon 水平的k=nu.hstack((arre,arrr))print(k)# concatenate 连接的意思,默认垂直合并b=nu.concatenate((arre,arrr))print(b)# print(nu.concatenate((arre,arrr),axis=0或1)    #前面只能写入一个容器,后面用axis控制竖着合并还是横着合并print(nu.concatenate((arrr,arre),axis=1))# 3.生成布尔矩阵arr = nu.array([[1, 2, 3],               [4,5,6]])print(arr>5)'''[[False False False] [False False  True]]'''
print("********************通过函数方法创建多维数组**************************************")a1=[i for i in range(10)]print(a1)# np.arage(起始值,结束值,步长)#顾头不顾尾,用法类似for 循环中的rangea2=[i for i in nu.arange(10)]print(a2)a3=[i for i in nu.arange(1,10,2)]print(a3)# .zeros/ones/eye# 构造3*4的全0矩阵print(nu.zeros((3, 4))) #填的值为(行数,列数)"""[[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]"""# 构造3*4的全1矩阵print(nu.ones((3, 4)))  #填的值为(行数,列数)"""[[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]"""# 构造3个主元的单位矩阵print(nu.eye(3))     #填的值为(主元的个数)'''[[ 1.  0.  0.] [ 0.  1.  0.] [ 0.  0.  1.]]'''# 2.linspace/logspace# 构造一个等差数列,取头也取尾,从0取到20,取5个数print(nu.linspace(0, 20, 5))#[  0.   5.  10.  15.  20.]# 构造一个等比数列,从10**0取到10**20,取5个数print(nu.logspace(0, 20, 5))# [1.e+00 1.e+05 1.e+10 1.e+15 1.e+20]# 意思就是 生成两行两列 为十个零的数print(nu.zeros((2,2,2)))
print("********************矩阵的运算**************************************")# 两个矩阵对应元素相加# 两个矩阵对应元素相减# 两个矩阵对应元素相乘# / 两个矩阵对应元素相除,如果都是整数则取商# % 两个矩阵对应元素相除后取余数# n 单个矩阵每个元素都取n次方,如2:每个元素都取平方ar = nu.array([[1, 2, 3],[4,5,6]])er= nu.array([[3, 2, 4],[5,3,7]])print(ar+er)"""[[ 4  4  7] [ 9  8 13]]"""print(ar*2)"""[[ 2  4  6] [ 8 10 12]]"""# 点乘和转置(了解) 点乘必须 m*n n *mprint(nu.dot(ar,er.T))"""[[19 32] [46 77]]"""# 求逆(了解)print(nu.linalg.inv(nu.dot(ar,er.T)))"""[[-8.55555556  3.55555556] [ 5.11111111 -2.11111111]]"""# 获取矩阵所有元素中的最大值# print(ar.max())# 获取举着每一列的最大值# print(ar.max(axis=0))# 获取矩阵每一行的最大值# print(ar.max(axis=1))# 获取矩阵最大元素的索引位置# print(ar.argmax(axis=1)# 获取矩阵所有元素的平均值# print(ar.mean())# 获取矩阵每一列的平均值# print(ar.mean(axis=0))# 获取矩阵每一行的平均值# print(ar.mean(axis=1))# 获取矩阵所有元素的方差# print(ar.var())# 获取矩阵每一列的元素的方差# print(ar.var(axis=0))# 获取矩阵每一行的元素的方差# print(ar.var(axis=1))
print("********************numpy生成随机数**************************************")# https://www.cnblogs.com/pythonywy/p/11010790.html# https://www.cnblogs.com/geyatou322/p/11012088.html# https://www.runoob.com/numpy/numpy-tutorial.html# RandomState()方法会让数据值随机一次,之后都是相同的数据rs = nu.random.RandomState(1)print(rs.rand(10))# 构造3*4的均匀分布的矩阵# seed()方法会让数据值随机一次,之后都是相同的数据np.random.seed(1)print(nu.random.rand(3, 4))# 构造3*4*5的均匀分布的矩阵print(nu.random.rand(3, 4, 5))# 构造3*4的正态分布的矩阵print(nu.random.randn(3, 4))# 构造取值为1-5内的10个元素的ndarray数组print(nu.random.randint(1, 5, 10))# 构造取值为0-1内的3*4的矩阵print(nu.random.random_sample((3, 4)))# 随机选取arr中的两个元素print(nu.random.choice(arr, size=2)) # https://www.runoob.com/w3cnote/python-pip-install-usage.html

 

 

 

转载于:https://www.cnblogs.com/Sup-to/p/11040497.html

你可能感兴趣的文章
数据库 : 事物以及隔离性导致的问题
查看>>
Jquery乱码终极解决方案
查看>>
Android Fragment 真正的完全解析(上) (转载)
查看>>
多线程依次打印abcabc
查看>>
一:学习Linux前准备工作
查看>>
how to install wireless driver for Dell 630 in Ubuntu
查看>>
Kafka 配置参数汇总及相关说明
查看>>
弄清 CSS3 的 transition 和 animation
查看>>
服务器指定网卡进行备份数据避免影响业务口
查看>>
在Sublime Text 2下面开发Sass
查看>>
四则运算个人项目3
查看>>
eclipse 构建maven web工程
查看>>
237. Delete Node in a Linked List
查看>>
[转] webpack之plugin内部运行机制
查看>>
宽字节与多字节之间的转换
查看>>
SEO的重要性
查看>>
ASP.NET 运行时详解 揭开请求过程神秘面纱
查看>>
Oracle 索引的失效检查
查看>>
C语言第五次作业--数据类型
查看>>
系统架构师-基础到企业应用架构-业务逻辑层
查看>>