-
Matplot 常用函数总结
2017-07-03 09:16:20python Matplot 常用函数总结学习整理自:http://www.cnblogs.com/TensorSense/p/6802280.html,如有侵权,联系删除
plt.savefig(‘test’, dpi = 600) :将绘制的图画保存成png格式,命名为 test
plt.ylabel(‘Grade’) : y轴的名称
plt.axis([-1, 10, 0, 6]) : x轴起始于-1,终止于10 ,y轴起始于0,终止于6
plt.subplot(3,2,4) : 分成3行2列,共6个绘图区域,在第4个区域绘图。排序为行优先。也可 plt.subplot(324),将逗号省略。
.plot函数
plt.plot(x, y, format_string, **kwargs): x为x轴数据,可为列表或数组;y同理;format_string 为控制曲线的格式字符串, **kwargs 第二组或更多的(x, y, format_string)
format_string: 由 颜色字符、风格字符和标记字符组成。
颜色字符:‘b’蓝色 ;‘#008000’RGB某颜色;‘0.8’灰度值字符串
风格字符:‘-’实线;‘--’破折线; ‘-.’点划线; ‘:’虚线 ; ‘’‘’无线条
标记字符:‘.’点标记 ‘o’ 实心圈 ‘v’倒三角 ‘^’上三角
eg: plt.plot(a, a*1.5, ‘go-’, a, a*2, ‘*’) 第二条无曲线,只有点
.plot 显示中文字符
pyplot并不默认支持中文显示,需要rcParams修改字体来实现
rcParams的属性:
‘font.family’ 用于显示字体的名字
‘font.style’ 字体风格,正常’normal’ 或斜体’italic’
‘font.size’ 字体大小,整数字号或者’large’ ‘x-small’
eg:
import matplotlib
matplotlib.rcParams[‘font.family’] = ‘STSong’
matplotlib.rcParams[‘font.size’] = 20
设定绘制区域的全部字体变成 华文仿宋,字体大小为20
中文显示2:只希望在某地方绘制中文字符,不改变别的地方的字体
在有中文输出的地方,增加一个属性: fontproperties
eg:
plt.xlabel(‘横轴:时间’, fontproperties = ‘simHei’, fontsize = 20)
pyplot文本显示函数:
plt.xlabel():对x轴增加文本标签
plt.ylabel():同理
plt.title(): 对图形整体增加文本标签
plt.text(): 在任意位置增加文本
plt. annotate(s, xy = arrow_crd, xytext = text_crd, arrowprops = dict)
: 在图形中增加带箭头的注解。s表示要注解的字符串是什么,xy对应箭头所在的位置,xytext对应文本所在位置,arrowprops定义显示的属性
eg:
plt.xlabel(‘横轴:时间’, fontproperties = ‘SimHei’, fontsize = 15, color = ‘green’)
plt.ylabel(‘纵轴:振幅’, fontproperties = ‘SimHei’, fontsize = 15)
plt.title(r’正弦波实例 $y=cons(2\pi x)$’ , fontproperties = ‘SimHei’, fontsize = 25)
plt.annotate (r’%mu=100$, xy = (2, 1), xytext = (3, 1.5),
arrowprops = dict(facecolor = ‘black’, shrink = 0.1, width = 2)) # width表示箭头宽度
plt.text (2, 1, r’$\mu=100$, fontsize = 15)
plt.grid(True)
plt. annotate(s, xy = arrow_crd, xytext = text_crd, arrowprops = dict)
plt子绘图区域
plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1):设定网格,选中网格,确定选中行列区域数量,编号从0开始。
eg:
plt.subplot2grid((3, 3), (1, 0), colspan = 2) : (3,3)表示分为3行3列,(1,0)表示选中第1行,第0列的区域进行绘图,colspan=2表示在选中区域的延伸
GridSpec类
Plot的图表函数
plt.plot(x,y , fmt) :绘制坐标图
plt.boxplot(data, notch, position): 绘制箱形图
plt.bar(left, height, width, bottom) : 绘制条形图
plt.barh(width, bottom, left, height) : 绘制横向条形图
plt.polar(theta, r) : 绘制极坐标图
plt.pie(data, explode) : 绘制饼图
plt.scatter(x, y) :绘制散点图
plt.hist(x, bings, normed) : 绘制直方图
绘制饼图
explode表示突出,如橘色这一块突出;autopct 表示显示数据的格式; shadow表示二维饼图;startangle表示起始的角度;
此为椭圆形饼图,要为圆形,可添加: plt.axis(‘equal’)
绘制直方图
bings将直方图的取值范围进行均等划分bings个区间;
normed =1 表示将出现频次进行了归一化。 normed=0,则为频次;
alpha表示直方图的透明度[0, 1] ;
histtype = ‘stepfilled’ 表示去除条柱的黑色边框
面向对象的极坐标图绘制
面向对象散点图绘制
将subplots()变成一个对象,fig和ax表示subplots生成的图表以及相关区域。subplots为空时,默认为subplots(111)
-
numpy,pandas,matplot常用函数
2019-02-25 22:39:33很多方法都只列出了一个目录,详细的内容需要去对应的API文档看,本文档的作用是对于初学可以感受到numpy,pandas可以做哪些数据分析,而不用自己一步一步敲代码,整体感知。 -
matplot绘图常用快查
2019-05-06 13:38:14matplot绘图常用快查全局画布图表元素--辅佐线--坐标--图形 全局 matplotlib.rcsetup.all_backends:获取本地可用backend matplotlib.use(arg):修改backend matplotlib.pyplot.get_backend():获取当前的 ...全局
–渲染
matplotlib.rcsetup.all_backends
:获取本地可用backend
matplotlib.use(arg)
:修改backend
matplotlib.pyplot.get_backend()
:获取当前的 backend
matplotlib.pyplot.ion()
:开启交互模式
matplotlib.pyplot.ioff()
:关闭交互模式–样式
matplotlib.matplotlib_fname()
:自定义的配置文件位置
matplotlib.get_configdir()
:默认样式文件位置
plt.style.use()
:使用样式
plt.style.available
:当前可用的样式列表
plt.style.context()
:在某个块内使用某种样式
matplotlib.rcParams['...']
:直接定义样式参数
plt.rcParams['font.sans-serif']=['simhei']
:正常显示中文
plt.rcParams['axes.unicode_minus']=False
||plt.rc('axes',unicode_minus=False)
:正常显示负号
matplotlib.rcdefaults()
:恢复内建的样式
matplotlib.rc_file_defaults()
:恢复成最初导入的 rc 文件样式- plt.plot 函数使用 fmt 参数, plt.stem 函数使用了 linefmt, markerfmt, basefmt 参数
线
'-'
:实线
'--'
:杠线
'-.'
:点杠线
':'
:点线
标记点
'.'
:点
','
:无
'o'
:圆
'v'
||'1'
:下三角
'^'
||'2'
:上三角
'<'
||'3'
:左三角
'>'
||'4'
:右三角
's'
:方形
'p'
:五边形
'*'
:星形
'h'
||'H'
:六边形2种
'+'
:加号
'x'
:叉号
'D'
||'d'
:大小钻石
'\|'
:短竖线
'_'
:短横线
颜色
'b'
:蓝
'g'
:绿
'r'
:红
'c'
:青
'm'
:品
'y'
:黄
'k'
:黑
'w'
:白
画布
plt.figure(num, figsize, dpi)
:创建或切换画布
plt.get_fignums()
:返回所有画布编号
plt.gcf()
:获取当前的画布
plt.suptitle(t)
:设置画布标题
plt.show()
:绘制画布
plt.savefig(fname, dpi, format, transparent)
:画布保存成文件
plt.clf()
:清除当前的画布
plt.close(num)
:关闭指定画布图表
plt.subplot(211, sharex, sharey)
:指定位置绘制图表,sharex为Axes对象
plt.axes(ax)
:切换图表
plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False)
:创建新画布和一系列的子图表
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
:调整子图表布局
plt.twinx(ax=None)
||plt.twiny(...)
:创建重叠图表, y或x轴放在右侧或顶部
plt.cla()
清除当前的图表
plt.delaxes(ax=None)
:删除当前或指定图表元素
–图形
plt.plot(x1, y1, fmt1, x2, y2, fmt2, ...)
:点线图
plt.step(x1, y1, x2, y2, ..., where='pre')
:阶梯状,where:[pre,post,mid]
plt.plot_date(x, y, fmt='o', xdate=True, ydate=False)
:点线图,轴解析为日期
plt.errorbar(x, y, yerr=None, xerr=None, lolims=False, uplims=False, xlolims=False, xuplims=False)
:误差线图
plt.fill_between(x, y1, y2=0)
:填充的线图
plt.fill_betweenx(y, x1, x2=0)
:纵向填充的线图
plt.stackplot(x, y1, y2, ...
:堆叠图
plt.bar(x, height, width=0.8, bottom=0)
:柱状图
plt.barh(y, width, height=0.8, left=0)
:水平柱状图
plt.scatter(x, y, s=None, c=None, alpha=None)
:散点图
stem(x, y, linefmt=None, markerfmt=None)
:杆图
plt.pie(x, explode=None, labels=None, colors=None, autopct=None,pctdistance=0.6, shadow=False, labeldistance=1.1)
:饼图–坐标
plt.axis([xmin, xmax, ymin, ymax])
:返回或设置坐标轴范围
plt.axis('off')
:不显示坐标轴和坐标轴名称
plt.axis('tight')
:尽量裁剪
plt.xticks(locs, labels)
||plt.yticks(...)
:设置坐标点及标签
plt.xlabel(label)
||plt.ylabel(...)
:设置轴标签
plt.xlim(xmin, xmax)
||plt.ylim(...)
:设置并返回轴范围
plt.grid(b=None, axis='both')
:栅格
plt.title(s)
:添加图表标题
plt.legend()
:添加图例
plt.annotate(s, xy)
:图表中进行标注
plt.text(x, y, s)
:添加文字
plt.arrow(x, y, dx dy)
:绘制箭头,从 (x, y) 到 (x+dx, y+dy)–辅佐线
plt.axvline(x=0, ymin=0, ymax=1)
||plt.axhline(...)
:横跨当前图表的垂直/水平辅助线
plt.axvspan(xmin, xmax, ymin=0, ymax=1)
||plt.axhspan(...)
:横跨当前图表的垂直/水平区域 - plt.plot 函数使用 fmt 参数, plt.stem 函数使用了 linefmt, markerfmt, basefmt 参数
-
python的matplot库的常用模板汇总
2020-07-07 18:25:42折线图:里面的数据不能运行只是介绍用法 import matplotlib.pyplot as plt import numpy as np from matplotlib import font_manager from matplotlib.pyplot import MultipleLocator plt.rcParams['font.sans-...折线图:里面的数据不能运行只是介绍用法
import matplotlib.pyplot as plt import numpy as np from matplotlib import font_manager from matplotlib.pyplot import MultipleLocator plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体显示中文 xlist = [] ylist = [] plt.plot(xlist, ylist, color ='red', linestyle = '--')#给个xlist和ylist画函数图x是x轴坐标y是Y轴坐标存取时一一对应 #plt.plot(ylist, color ='blue', linestyle = '--') plt.axvline(0, color='blue', linestyle='--')#绘制y轴平行线 plt.axvline(0.25, color='blue', linestyle='--',linewidth=2) plt.axvline(0.43, color='blue', linestyle='--') plt.axvline(0.69, color='blue', linestyle='--') plt.axvline(1, color='blue', linestyle='--') plt.axhline(0, color='red', linestyle='--')#绘制x轴平行线 plt.title("BaTiO3能带曲线图")#设置标题 plt.xlabel("Band energy", fontsize=12)#x轴名称 plt.ylabel("Energy(Ha)")#y轴名称 plt.tick_params(axis='both',labelsize=10)# 设置坐标轴刻度标记的大小 plt.axis([-1,1,-1,1])#这个是设置x轴y轴的左右的极限值也就是横纵坐标大小 plt.show()#显示图像 plt.xticks([1, 1.5,2,2.5, 3,3.5, 4,4.5, 5,5.5, 6],["1:20","1:25","1:30", "1:35","1:40","1:45", "1:50", "1:55", "1:60","1:70","1:75"])#这个是更改x轴的名字每个刻度变成了这个名字
这是公式造图
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-1, 1, 50)#-1是开始点1是结束点50是每个格子的长度 y = x**2 plt.plot(x, y) plt.show()
这是3d图
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig = plt.figure()#建一个框 ax = Axes3D(fig) x = np.arange(-4,4,0.25) y = np.arange(-4,4,0.25) x, y = np.meshgrid(x, y) r = np.sqrt(x**2+y**2) z = np.sin(r) ax.plot_surface(x, y, z, rstride=1,cstride=1, cmap=plt.get_cmap('rainbow')) plt.show()
这是当时学习笔记
import matplotlib.pyplot as plt import numpy as np from pylab import mpl from matplotlib.pyplot import MultipleLocator mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体解决中文转码 x = np.linspace(-1, 1, 50)#-1是开始点1是结束点50是把全长分成50份 y1 = 2*x+1 y2 = x**2 plt.figure()#num是编号figsize()是显示框大小表示新创建一个图像框不信创建的话会图像重叠 plt.plot(x, y1) plt.figure(num = 3, figsize=(8,5))#num是编号figsize()是显示框大小 plt.plot(x, y2) plt.plot(x, y1, color='red', linewidth=5.0, linestyle='--') plt.xlim((-1,2))#x轴的左边和右边的极限值 plt.ylim((-2,3))#y轴的取值 plt.xlabel('x的描述') plt.ylabel('y的描述') x_major_locator = MultipleLocator(3) ax = plt.gca() # 把x轴的主刻度设置为1的倍数 # 把x轴的刻度间隔设置为1,并存在变量里 x_major_locator = MultipleLocator(0.5) # 把y轴的刻度间隔设置为1,并存在变量里 y_major_locator = MultipleLocator(0.5) # ax为两条坐标轴的实例 ax = plt.gca() # 把x轴的主刻度设置为1的倍数 ax.xaxis.set_major_locator(x_major_locator) # 把y轴的主刻度设置为1的倍数 ax.yaxis.set_major_locator(y_major_locator)
3d图形笔记
import numpy as np from scipy import stats import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 三维,两个特征 fig = plt.figure(figsize=(8, 6)) #设置图标的大小 ax = fig.add_subplot(111, projection='3d') # 111的意思是把画布分为1行1列,画在第一个方格内。其实就是整个画布。 # 创建样本,注意两个特征不能线性相关,否则无法用最小二乘解参数 X1 = np.arange(-4, 4, 0.1) m = len(X1) X2 = np.random.rand(m)*5 # print(X2) # print(X1) # 堆叠全1数组和X1以及X2形成样本的矩阵,倒置,用以矩阵乘法 X = np.vstack((np.full(m, 1), X1, X2)).T # y = 15*X1 + 3 * X2 + theta0 # 自定义样本输出 Y = X1 + 3 * X2 + 3*np.random.randn(m) # 利用标准方程(最小二乘法求解theta) theta = np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(X), X)), np.transpose(X)), Y) print(theta) # 构造网格 meshgrid函数可以通过延伸矩阵构造多维坐标中的网格坐标。 M, N = np.meshgrid(X1, X2) # zip函数构建一个多元祖[(x1,y1),(x2,y2)...],ravel函数将一个多维数组合并成一维数组 Z = np.array([theta[1] * d + theta[2]*p + theta[0] for d, p in zip(np.ravel(M), np.ravel(N))]).reshape(M.shape) # 根据网格和函数构建图形 suface是一个完整的面 #ax.plot_surface(M, N, Z) # scatter是散点图 ax.scatter(X1, X2, Y, c='r') # 设置坐标轴的名称 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
这是一个3d例子:
import numpy as np from scipy import stats import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(111, projection='3d') X1 = np.arange(-4, 4, 0.1);X2 = np.random.rand(len(X1))*10 X = np.vstack((np.full(len(X1), 1), X1, X2)).T Y = X1 + 3 * X2 + 3*np.random.randn(len(X1)) thetac = np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(X), X)),np.transpose(X)), Y) print(thetac) M, N = np.meshgrid(X1, X2) Z = np.array([thetac[1] * d1 + thetac[2]*p + thetac[0] for d1, p in zip(np.ravel(M), np.ravel(N))]).reshape(M.shape) ax.scatter(X1, X2, Y, c='r') ax.set_xlabel('X(*1e2nm)') ax.set_ylabel('Y(*1e2nm)') ax.set_zlabel('Z(*1e2nm)') plt.show()
这是直方图:
import numpy as np import pandas as pd from pylab import mpl import matplotlib.pyplot as plt series = np.array([3, 5, 7, 10, 3]) plt.bar(x=list('ABCDE'), height=series, color='tab:green', width=.5) plt.show() plt.barh(y=list('abcde'), width=series, height=.5) plt.show()
直方图操作实例可以运行:
import numpy as np import pandas as pd from pylab import mpl import matplotlib.pyplot as plt from matplotlib.pyplot import MultipleLocator mpl.rcParams['font.sans-serif'] = ['SimHei'] series = np.array([15.4, 12.3, 9.2, 6.4, 2.2]) series1 = np.array([14.3, 11.4, 7.4, 5.5, 1.1]) series2 = np.array([14.6, 9.6, 6.5, 4.3, 1.6]) labels = [1,2,3,4,5] x = np.arange(len(labels)) width = 0.1 plt.xlabel("time(day)", fontsize=12) plt.ylabel("Surplus of sand(cm3)", fontsize=12) plt.bar(x-width, series, width, label='cone') plt.bar(x, series1, width, label='Cylinder') plt.bar(x+width, series2, width, label='Pyramid') plt.legend() plt.xticks(x, labels) plt.title("The change of sand surplus caused by the impact of sea water on sand pile at different time", fontsize=7) plt.show()
-
numpy matplot等python常用类库的使用
2019-12-02 19:36:23本文引用和使用的类库 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets Jupyter Notebook’s Learning to writing Toolbar 可以进行 Cell代码行的编写运行 ...本文引用和使用的类库
- import numpy as np
- import matplotlib.pyplot as plt
- from sklearn import datasets
Jupyter Notebook’s Learning to writing
Toolbar
- 可以进行 Cell代码行的编写运行
- 可以切换Cell编写模式——为Markdown的模式
- Help当中可以快速浏览并且更改使用的快捷键
快捷键
- a/b 快速插入一行(在相应的选中行的上面或者下方)
- x 剪切/删除一行
- m 切换为markdown模式
- y 切换为coding模式
优点
每次不用总是重新加载数据
只需要加载一次就可以!所以方便
注意:下面定义的变量,在上方也可以用!除非点击Kernel——Restart & run all
以上就可以充值变量上下文。
Jupyter Notebook 高级-魔法命令
%run #调用并且 加载对应的脚本/方法。 %timeit #只能写一句话!测试 耗费时间 %%timeit #测试下面耗时 %time #测试一句话的cpu和人类感知的实际时间 %%time #测试多行代码耗时
%run? #查看对应方法的 帮助文档
lsmagic #查看当前环境下,所有的魔法命令
numpy.array基础
选择为什么不选择List
Python List 的特点
L = [i for i in range(10)] # 像是cell 可以放置多种不同类型的元素在List中。 # List十分灵活 import array arr = array.array('i',[ i for i in range(10) ]) #array模块是python中实现的一种高效的数组存储类型。它和list相似,但是所有的数组成员必须是同一种类型,在创建数组的时候,就确定了数组的类型 #array.array(typecode,[initializer]) --typecode:元素类型代码;initializer:初始化器,若数组为空,则省略初始化器 arr = array.array('i',[0,1,1,3]) print(arr) #array('i', [0, 1, 1, 3]) #array.typecode -- 对象属性 print('\n 输出 用于创建数组的类型代码字符:') print(arr.typecode) # 输出 用于创建数组的类型代码字符: #i
区别List 、 array、 numpy.array
- Python的List不要求存储同样的类型,带来效率问题。
- array的缺点是没有将数据当做向量或者矩阵,不支持基本运算。
- nparr.dtype —— 只有一种类型的数据类型在nparr中!
而且 nparr可以有 整型 和 浮点型
而且 nparr可以用来生成 矩阵和向量之类的。
使用 range 创建list列表
- range(start, stop[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等>价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, >5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, >5, 1)函数方法
- np.arange(0, 20, 2)
#[0, 20) 步长为2的
- np.linspace(0, 20, 10)
#[0, 20] 区间中截取出10个数字
- np.random.randint( 0, 10, 10/(3,5) )
[0,10)的随机10 个数字;或者 3行5列!
- np.random.random( 10/(3, 5) )
0-1之间均匀的浮点数
- np.random.seed( 666 )
给予一个伪随机数,就能对应生成确定的随机矩阵。
- np.random.normal( 10, 100, (3,5))
#默认:均值为0 方差为1,的随机的浮点数。上面是均值为10、方差为100的 3行5列的矩阵!
- np.random.uniform( 0., 10., size = 100 )
产生100个 [0,100) 的浮点数
查看文档
- np.random?
- help(np.random)
其它创建numpy.array的方法
- np.zeros(10)
- np.ones((3,5))
- np.full( (3,5), 666 )
numpy.arrary 的基本操作
- X = np.arange(15).reshape((3, 5))
15个元素 重新构成3*5的矩阵 - X.ndim #2(二维数组)
- X.shape #(3,5)
注意: X.shape[0] == 3
- X.size #15
数据访问方法
多维数组不建议:
X[0][0]
建议使用:X[0, 0]
切片
切片访问:
x[0:5:2]
【0,5) 步长为2 NOTX
X[:2, :3] #前两行的 前三列
X[ :, 0] #取第一列子矩阵 在父亲矩阵中使用的引用!所以也会改变 父亲矩阵!
除非 X[:2, :3].copy() —— 来进行非引用拷贝Reshape
不改变 原来的数据、而是改变成矩阵!但是需要复制!不会
- B = x.reshape(1, 10)
- B
注意这个有两个维度!
- array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
- x.reshape( 2, -1)
注意这里是让 x转化成两行的元素,自动化分列数
np.array的合并和分割
np.concatenate()
- A = np.array([[1, 2, 3],
[4, 5, 6]]) - np.concatenate([A, A])
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]])- np.concatenate([A, A], axis=1)
- array([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
默认为:(轴)axis=0,表示进行第一维度链接
等于1 表示进行第二维度连接- np.concatenate([A, z.reshape(1, -1)])
注意concat 只能进行相同纬度的叠加!需要把z向量转化为 矩阵!
- np.vstack([A, z])
进行A z的纵向链接, 相当于加上一行,在自己这一行后面
- np.hstack([A, z]) #加上一列
进行A z的横向矩阵链接, 相当于加上一列,在自己这一行一列 后面
强制转化 数据类型
x = np.array( X, dtype=float )
np.slit()
- x1, x2, x3 = np.split(x, [3, 7])
切分点 0–2 3–6 7–9(x = 0–9)
- A1, A2 = np.split(A, [2], axis=1)
切分矩阵,默认0-第一维度-行方向 第二行切割
注意:矩阵是从第0行开始的!,所以 第二行在A2中!
- upper, lower = np.vsplit(A, [2])
进行垂直方向 上下切分矩阵。
- left, right = np.hsplit(A , [2])
进行水平方向 进行左右切分
- y = array([[ 3],
[ 7],
[11],
[15]])
为了进行4行1列的矩阵–转变为向量
- y[:, 0]
抽出所有的行,只要第一列。变为:array([ 3, 7, 11, 15]) —— 向量了!
是为了,对数据进行 预处理而进行学习使用的!
np.delete()
X.shape
(150,2)
X_new = np.delete( X, 138, axis=0 )
直接把X的第138行给删除了numpy.array
中的运算numpy直接就能 数组看做矩阵、向量进行运算!
Universal Functions
numpy 遵循这个直接运算要求而且快!
直接 + - ×
/ 浮点数出发
// 证书的出发!
x ** 2 幂运算
x % 2
1 / x- np.abs()
- np.sin()
- np.cos()
- np.tan()
- np.exp(x) #e的x次方
- np.power(3, x) #3的x次方
- np.log(x) #以e为底的 函数
- np.log2(x) # 以2为底的函数
- np.log10(x) #以10为底的 函数
矩阵运算
- A + - * B
A*B 是指对应元素及进行运算! 不是标准矩阵之间惩罚
- A.dot(B)
A和B 两矩阵进行标准的惩罚运算。
- A.T
矩阵转置方法。
向量v和矩阵A的运算
- v+A
相当于:
np.vstack([v] * A.shape[0]) + A
- np.tile(v, (2, 1))
堆叠向量v, 行堆叠2次,列堆叠1次相当于上方!
- v*A
v.dot(A) —— 矩阵乘法!
A.dot(v) —— v会根据矩阵A进行 自动调整自己是行向量,还是列向量!矩阵的逆
- np.linalg.inv(A)
linear algebra //线性代数
方阵才有 逆矩阵- pinvA = np.linalg.pinv(X)
伪 逆矩阵!可求出不是方阵的伪逆矩阵!
- X.dot(pinvA)
仍然是一个 方阵.
向量的模
- w1 = np.linalg.norm(w)
求出向量w的模
- w / w1
对应求出 w的单位向量
矩阵的聚合操作
- np.sum(L)
- np.min() / np.max()
等同于 array.min()
- np.sum( X, axis=0 )
沿着行方向进行运算 相加,所以最终是列加和。
- np.prod(X)
X中进行乘积
- np.mean(X) / np.median(X)
求均值 和 中位数
- np.percentile( big_arrary, q=50 )
找百分位 for percent in [0,25,50,75,100]:
- np.var(big_array) / np.std(big_array)
求方差/ 标准差
索引
arg方式
为了查看最小值,以及最小值的位置在哪
- np.argmin(x)
198532 == x[198532]
排序和使用索引
- np.random.shuffle(x)
直接进行乱序处理
- np.sort(x)
返回修改后的数组
- x.sort()
排好x的顺序
- np.sort(X , axis=1)
沿着列进行排序, 把每一行排好顺序了。
- np.argsort(x)
拍好 索引顺序的数组,通过索引,找大小。
- np.partition(x, 3)
标定点3, 小于3的在左边, 大于3的在右边
- np.argpartition(x, 3)
仍然是进行 索引的标定3
将数组打乱随机排列 两种方法:
- np.random.shuffle(x):在原数组上进行,改变自身序列,无返回值。
- np.random.permutation(x):不在原数组上进行,返回新的数组,不改变自身数组。
Fancy Indexing
- x[3:9:2]
2为步长 进行索引
- ind = [3, 5 ,8]
- x[ind]
对应进行索引!
- ind = np.array([[0, 2], [1, 3]])
- x[ind]
对应进行索引,根据ind索引,建立 新的x矩阵。
- col = np.array([1, 2, 3])
- x[:2, col]
x中前两行的
第0行 和 第1行
, 1 2 3列- col = [True, False, True, False]
x[ 1:3, col]
numpy.array的比较
- example_digits = noisy_digits[y==0,:][:10]
只要对应前十行
- x > 3
返回bool值
- np.sum(x<=3) //统计x中 小于等于3的个数。
np.count_nonzero(x<=3)
- np.any(x==0) //true 有就行
np.all(x>=0) //true
- np.sum( x%2==0 )
np.sum(x%2==0, axis=1)
- np.all( x > 0, axis=1 )
np.sum( (x>3) & (x<10) )
- np.sum( (x%2==0) | (x > 10) )
np.sum( ~(x==0) )
- x[x[:,3]%3==0, :]
最后一列被三整除为 0,3个True——转化为第0行和第3行
Pandas
- Pandas进行预处理——然后转化为 numpy——再把numpy加入到 sklearn之中进行处理、操作!
以上!numpy进行机器学习矩阵进行处理的方法,完成。
因为 sklearn是需要numpy的数据进行操作的,然而Pandas方便进行处理,所以 需要进行这样的过度。matplotlib 基础
- import matplotlib as mpl
- import matplotlib.pyplot as plt
plt.plot绘制直线图
- plt.plot(x, y, color=“red”, linestyle="–", label=“cos(x)” )
应该再加上:
plt.legend()
用来显示对应曲线的图例- plt.show()
linestyle 绘制出来 : -, – -不同的图像形式。
- plt.xlim(-5, 15)
- plt.ylim(0, 1)
更改 x,y轴的范围.
- plt.axis([-1 ,11 ,-2 ,2])
- plt.xlabel(""x value)/ pltylabel(“y value”)
- plt.title(“添加对应标题.”)
plt.scatter 绘制散点图
- plot.scatter(x, siny, alpha=0.5)
通常绘制二维特征/两个特征的时候 用散点图。
不透明度—— 0完全透明,1完全不透明。- plt.scatter(X[y0,0], X[y0,1], color=“red”, marker=“o”)
plt.scatter(X[y1,0], X[y1,1], color=“blue”, marker="+")
plt.scatter(X[y2,0], X[y2,1], color=“green”, marker=“x”)
plt.show()
高斯核函数讲解
l1, l2 = -1, 1 X_new = np.empty((len(x), 2)) # 将一维数据 映射到二维上面了,利用 高斯核函数. for i, data in enumerate(x): X_new[i, 0] = gaussian(data, l1) X_new[i, 1] = gaussian(data, l2) # enumerate( x ) 讲x的数值放入到data中,索引放入到i中.
关键学会 enumerate的使用。
读取数据和简单的数据探索
- from sklearn import datasets
- iris = datasets.load_iris() # 鸢尾花数据集
- iris.keys()
- iris.data #相对应的数据
- iris.target #相对应的种类
y = iris.target plt.scatter(X[y==0,0], X[y==0,1], color="red") #找出鸢尾花对应的种类所在行, #然后显示 这一行的,0\1两个特征~ OK~ plt.scatter(X[y==1,0], X[y==1,1], color="blue") plt.scatter(X[y==2,0], X[y==2,1], color="green") plt.show()
数据处理代码操作注意事项
使用copy()数值
y = digits.target
y = digits.target.copy() # 这样写作为一个拷贝才正确使用try except
try:
return 2 * precision * recall / (precision + recall)
except:
return 0.0 -
matplot在深度学习中常用的图
2020-10-20 17:40:421.等高线图 plt.figure() plt.contourf(X,Y,y_pre,100,cmap='jet',extend='both') X,Y是一维坐标,如果需要可以将值网格化求出X,Y,y_pre是一个二维矩阵,通常np.array(y_pre)[0]*np.array(y_pre)[1]等于len(X),... -
数据分析最常用的matplot基础使用笔记
2017-08-13 10:50:35数据分析最常用的matplot基础使用笔记,大家可以直接复制修改相关属性就可以看到前后的对比效果,本人编辑器pycharm# -*- coding:utf-8 -*-""" @author: Fane @file: matplotlibTest.py @time:2017/8/12 22:01 """ ... -
人工智能Python之Matplot基础系列视频课程
2017-12-25 20:51:14机器学习中,比较热门的语言Python。其中以Numpy、Pandas、Matplotlib为常用。... Anacoda正确的使用姿势 Notebook基本使用 matplot之基本框绘制 matplot之折线图优化 matplot之区域画多图 matplot之其他操作 -
学习笔记(01):人工智能Python之Matplot基础系列视频课程-matplot之基本框绘制
2019-09-18 21:57:44其中以Numpy、Pandas、Matplotlib为常用。 本套课程就给大家讲解下Matplotlib的相关用法. Anacoda正确的使用姿势 Notebook基本使用 matplot之基本框绘制 matplot之折线图优化 matplot之区域画多图 matplot之... -
python的绘图包matplot
2021-01-13 23:04:29Matplot绘图 导包:from matplotlib import pyplot as plt 常用方法: show():一般在最后面做图形显示,plt.show() plot():功能是传递数据,让其绘制图形,并且返回的是一个Line2D对象(每条线一个) 如果接受的... -
Python可视化分析-matplot基础
2017-10-22 12:10:00环境搭建 Anaconda 集成了数据分析、科学计算相关的常用的安装包,如Numpy,Scipy,Matplot、Ipython等。 下载地址:https://www.anaconda.com/download/ -
python matplot_Python matplotib 画图
2020-12-05 20:08:00Matplotlib 里的常用类的包含关系为Figure -> Axes -> (Line2D, Text, etc.)一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,可以理解为子图。demo1:曲线图和直线图#!/usr/... -
PythonGIS可视化—Matplot basemap工具箱
2014-07-13 14:36:42在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来。比如说我们会想要在地图上画...Matplot是python上常用的一个数据绘制包。它基于numpy(numpy是python用于数组运算的一个包)。Matplot具有 -
人工智能Python之Matplot基础系列视频课程-陆永剑-专题视频课程
2017-12-26 09:09:51其中以Numpy、Pandas、Matplotlib为常用。 本套课程就给大家讲解下Matplotlib的相关用法. Anacoda正确的使用姿势 Notebook基本使用 matplot之基本框绘制 matplot之折线图优化 matplot之区域画多图 matplot之... -
python plot map_PythonGIS可视化—Matplot basemap工具箱
2021-02-09 05:22:39在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来。...Matplot是python上常用的一个数据绘制包。它基于numpy(numpy是python用于数组运算的一个包)。Matplot具有强大的数据绘制功... -
gis显示python窗体化gui_PythonGIS可视化—Matplot basemap工具箱
2021-01-11 21:43:13在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来。... Matplot是python上常用的一个数据绘制包。它基于numpy(numpy是python用于数组运算的一个包)。Matplot具有强大的数据绘制... -
numpy/pandas/matplot入门及深耕
2020-11-26 23:16:442. pands模块常用功能 3. 缺失值填充的几种方法 4. pandas用法大全 5. pandas的替换和部分替换(replace) 6. pandas中DataFrame修改index、columns名的方法 7.pandas.concat实现竖着拼接、横着拼接DataFrame 8.df.... -
pandas常用函数
2020-08-03 15:28:30本文研究的主要是pandas常用函数,具体介绍如下。 1 import语句 ? 1 2 3 4 5 import pandas as pd import numpy as np import matplotlib.pyplot as plt import ... -
matplot线性图,散点图,柱状图的常用操作学习笔记
2020-01-18 20:34:32import numpy as np import matplotlib.pyplot as plt # 线性图 x = np.linspace(-5,5,100) y1 = x * 2 + 3 y2 = (x ** 2) / 2 plt.figure(num=1,figsize=(8,5)) # plot绘制线条 l1 = plt.plot(x,y1,label='line'... -
matplotlib常用绘图
2021-03-26 10:30:08matplotlib常用绘图 参考自:嵩天老师的《python数据分析与展示》 1. 折线图 """ plt.plot(x, y, format_string, **kwargs) x : X轴数据,列表或数组,可选 y : Y轴数据,列表或数组 format_string : ... -
Python常用数据分析工具
2019-04-17 16:09:37Python数据分析工具 Python 本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力。常用 的库有Numpy 、Scipy 、...如果你安装的是Anaconda 发行版,那么它已经自带了以下库: Numpy 、Scipy 、Matplot... -
Python 常用模块安装锦集
2021-01-27 23:20:17Python 常用模块安装锦集 免废话,直接上图: 以下为具体代码,可供copy。有点懒,勿介意! ★★★★★Python★★★★★ ★★★Anacondas模块★★★ ★ numpy pip instal l numpy scipy matplotlib ★ pandas...