day18

day18,第1张

概述numpy模块 numpy是Python的一种开源的数据计算扩展库,用来存储和处理大型矩阵 区别于list列表,提供数组 *** 作,数组运算,以及统计分布和简单的数学模型 计算速度快 矩阵即numpy的ndarray对象,创建矩阵就是把一个列表传入np.array()方法 import numpy as np #约定俗成 np代表numpy#一维arr = np.array([1,2,3,4])prin numpy模块

numpy是Python的一种开源的数据计算扩展库,用来存储和处理大型矩阵

区别于List列表,提供数组 *** 作,数组运算,以及统计分布和简单的数学模型 计算速度快

矩阵即numpy的ndarray对象,创建矩阵就是把一个列表传入np.array()方法

import numpy as np #约定俗成 np代表numpy#一维arr = np.array([1,2,3,4])print(arr)[1,4]#二维arr = np.array([[1,4],[5,6,7,8]])[[1,4] [5,8]]#三维[[[1,[1,4]],[[2,4,5],[3,5,6],6]],[[5,8],8]]]arr = [[1,3]       [4,6]]#获取矩阵的行和列print(arr.shape)(2,3)#获取矩阵的行print(arr.shape[0])2# 获取矩阵的列print(arr.shape[1])3
切割矩阵
# 取所有元素print(arr[:,:])# 取第一行所有元素print(arr[:1,:])print(arr[0,[0,1,....(n个数则n-1)]])# 取第一列所有元素print(arr[:,:1])print(arr[[0,..],0])# 取第一行第一列的元素print(arr[0,0])#取大于5的元素,返回一个数组print(arr[arr > 5])#生成布尔矩阵print(arr > 5)[[False False False] [True  False True ]]
矩阵元素替换

类似于列表的替换

# 取第一行所有元素变为0arr1 = arr.copy()arr1[:1,:] = 0print(arr1)# 去所有大于5的元素变为0arr2 = arr.copy()arr2[arr >5] = 0print(arr2)#对矩阵清零arr3 = arr.copy()arr3[:,:] = 0print(arr3)
矩阵的合并
arr1 = [[1,2]        [3,4]]arr2 = [[5,6]        [7,8]]# 合并矩阵的行,用hstack的合并的话 会具有相同的行#方法1np.hstack((arr1,arr2))[[1,6] [3,8]]#方法2print(np.concatenate((arr1,arr2),axis=1))[[1,8]]# 合并矩阵的列,用vstack#方法1np.vstack((arr1,2] [3,6] [7,8]]# 方法2print(np.contatenate((arr1,axis=0))
通过函数创建矩阵
arangeprint(np.arange(10))#0-9数组[0 1 2 3 4 5 6 7 8 9]print(np.arange(1,5))#1-4数组[1 2 3 4]print(np.arange(1,20,2))#1-19,步长为2的数组[1 3 5 7 9 11 13 15 17 19]linspace/logspace#构造一个等差数列,取头也取尾np.linspace(0,5)[0.5.10.15.20]#构造一个等比数列,从10**0取到10**20,取5个数np.logspace(0,5)[ 1.00000e+00   1.00000e+05  1.00000e+10  1.00000e+15  1.00000e+20]zero/ones/eye/empty#构造全0矩阵np.zeros((3,4))[[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]#构造全1矩阵np.ones((X,Y))#构造N个主元的单位矩阵np.eye(n)#例[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]#构造一个随机矩阵,里面元素为随机生成np.empty((x,y))# fromstring通过对字符串的字符编码所对应ASCII编码的位置,生成一个ndarray对象s = 'abcdef'# np.int8表示一个字符的字节数为8print(np.fromstring(s,dtype=np.int8))[ 97  98  99 100 101 102]def func(i,j):    """其中i为矩阵的行,j为矩阵的列"""    return i*j# 使用函数对矩阵元素的行和列的索引做处理,得到当前元素的值,索引从0开始,并构造一个3*4的矩阵print(np.fromfunction(func,(3,4)))[[ 0.  0.  0.  0.] [ 0.  1.  2.  3.] [ 0.  2.  4.  6.]]
矩阵的运算 + - * / % **n 矩阵的点乘 必须满足第一个矩阵的列 = 第二个矩阵的行
arr1 = np.array([[1,3],[4,6]])print(arr1.shape)(2,3)arr2 = np.array([[7,[9,10],[11,12]])print(arr2.shape)(3,2)assert arr1.shape[0] == arr2.shape[1]# 2*3·3*2 = 2*2print(arr1.dot(arr2))[[ 58  64] [139 154]]
矩阵的转置 相当于矩阵的行和列呼唤
arr = np.array([[1,6]])print(arr)[[1 2 3] [4 5 6]]print(arr.transpose())[[1 4] [2 5] [3 6]]print(arr.T)[[1 4] [2 5] [3 6]]
矩阵的逆 矩阵行和列相同时候才可逆
arr = np.array([[1,[7,8,9]])print(arr)[[1 2 3] [4 5 6] [7 8 9]]print(np.linalg.inv(arr))[[  3.15251974e+15  -6.30503948e+15   3.15251974e+15] [ -6.30503948e+15   1.26100790e+16  -6.30503948e+15] [  3.15251974e+15  -6.30503948e+15   3.15251974e+15]]# 单位矩阵的逆是单位矩阵本身arr = np.eye(3)print(arr)[[ 1.  0.  0.] [ 0.  1.  0.] [ 0.  0.  1.]]print(np.linalg.inv(arr))[[ 1.  0.  0.] [ 0.  1.  0.] [ 0.  0.  1.]]
collections模块 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(OrderedDict) 可命名元组(namedtuple)  1. Counter

  Counter作为字典dicit()的一个子类用来进行hashtable计数,将元素进行数量统计,计数后返回一个字典,键值为元素,值为元素个数

常用方法:
most_common(int) 按照元素出现的次数进行从高到低的排序,返回前int个元素的字典
elements 返回经过计算器Counter后的元素,返回的是一个迭代器
update 和set集合的update一样,对集合进行并集更新
substract 和update类似,只是update是做加法,substract做减法,从另一个集合中减去本集合的元素
iteritems 返回由Counter生成的字典的所有item
iterkeys 返回由Counter生成的字典的所有key
itervalues 返回由Counter生成的字典的所有value
2. deque

  deque属于高性能的数据结构之一,常用方法如下:

append 队列右边添加元素
appendleft 队列左边添加元素
clear 清空队列中的所有元素
count 返回队列中包含value的个数
extend 队列右边扩展,可以是列表、元组或字典,如果是字典则将字典的key加入到deque
extendleft 同extend,在左边扩展
pop 移除并返回队列右边的元素
popleft 移除并返回队列左边的元素
remove(value) 移除队列第一个出现的元素
reverse 队列的所有元素进行反转
rotate(n) 对队列数进行移动
3. defaultdict 默认字典,字典的一个子类,继承所有字典的方法,默认字典在进行定义初始化的时候得指定字典值有默认类型 注:字典dic在定义的时候就定义好了值为字典类型,虽然现在字典中还没有键值 k1,但仍然可以执行字典的update方法. 这种 *** 作方式在传统的字典类型中是无法实现的,必须赋值以后才能进行值得更新 *** 作,否则会报错。 4. OrderedDict

  有序字典也是字典的一个子类

5. namedtuple

  namedtuple由自己的类工厂namedtuple()进行创建,而不是由表中的元组进行初始化,通过namedtuple创建类的参数包括类名称和一个包含元素名称的字符串

Matplotlib模块:绘图和可视化

一、简单介绍Matplotlib

1、Matplotlib是一个强大的Python绘图和数据可视化的工具包

2、安装方法:pip install matplotlib

3、引用方法:import matplotlib.pyplot as plt

4、绘图函数:plt.plot()

5、显示图像:plt.show()

二、Matplotlib:plot函数

1、plot函数:绘制折线图

线型linestyle(-,-.,--,..) 点型marker(v,^,s,*,H,+,x,D,o,…) 颜色color(b,g,r,y,k,w,…)

2、plot函数绘制多条曲线
3、pandas包对plot的支持

三、Matplotlib-图像标注

设置图像标题:plt.Title() 设置x轴名称:plt.xlabel() 设置y轴名称:plt.ylabel() 设置x轴范围:plt.xlim() 设置y轴范围:plt.ylim() 设置x轴刻度:plt.xticks() 设置y轴刻度:plt.yticks() 设置曲线图例:plt.legend()

四、Matplotlib实例——绘制数学函数图像

使用Matplotlib模块在一个窗口中绘制数学函数y=x,y=x2,y=3x3+5x2+2x+1的图像,使用不同颜色的线加以区别,并使用图例说明各个线代表什么函数。

五、Matplotlib:画布与子图

画布:figure

fig = plt.figure()

图:subplot

ax1 = fig.add_subplot(2,1)

调节子图间距:

subplots_adjust(left,bottom,right,top,wspace,hspace)

六、Matplotlib-支持的图类型

七、Matplotlib——绘制K线图

matplotlib.finanace子包中有许多绘制金融相关图的函数接口。
绘制K线图:matplotlib.finance.candlestick_ochl函数

八、示例代码

使用之前首先下载:pip install Matplotlib

接着引入:import matplotlib.pylot as plt

绘图函数:plt.plot()

显示函数:plt.show()

使用plt.plot?可以查看它的参数

我们通过加参数,可以更改这个图线的形状

总结

以上是内存溢出为你收集整理的day18全部内容,希望文章能够帮你解决day18所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1190898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存