numpy 与 matplotlib 的应用

一、库函数介绍

1. numpy库

  NumPy(Numeric Python)提供了一个N维的数组类型ndarray,Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。

  ndarray到底跟原生python列表的区别:

  ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。

2. matplotlib库

  matplotlib 是一个 Python 的 2D绘图库,也是Python编程语言及其数值数学扩展包 NumPy的可视化操作界面。它利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+向应用程序嵌入式绘图提供了应用程序接口(API)。此外,matplotlib还有一个基于图像处理库(如开放图形库OpenGL)的pylab接口,其设计与MATLAB非常类似--尽管并不怎么好用。SciPy就是用matplotlib进行图形绘制。

二、应用A

1. 介绍:对python123作业的成绩通过画图显示

2. 代码实现:

 # -*- coding:utf-8 -*-
''' 成绩雷达图 '''
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimHei' # 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体 labels = np.array(['第一周','第二周','第三周','第四周','第五周','第六周']) # 设置标签
datas = np.array([8, 10, 9, 10, 11, 7]) # 设置数据
angles = np.linspace(0, 2*np.pi, 6, endpoint = False) # 设置角度
datas = np.concatenate((datas, [datas[0]]))
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(facecolor = 'white') # 创建绘图区域
plt.subplot(111, polar = True) # 极坐标
plt.plot(angles, datas, 'bo-', color = 'g', linewidth = 1) # 画图
plt.fill(angles, datas, facecolor = 'g', alpha = 0.25) # 填充
plt.thetagrids(angles*180/np.pi, labels) # 设置极坐标的位置
plt.figtext(0.52, 0.95, '04-步平凡', ha = 'center') # 设置标题
plt.grid(True) # 打开网格线
plt.show() # 展示图片

3. 效果展示:

三、应用B

1. 介绍:使用numpy和PIL库实现图像的手绘效果

2. 代码实现:

 # -*- coding:utf-8 -*-
''' 手绘图像效果 '''
import numpy as np
from PIL import Image
vec_el = np.pi/2.2 # 光源的俯视角度,弧度值
vec_az = np.pi/4. # 光源的方位角度,弧度值
depth = 6. # 深度权值,值越小背景区域越接近白色,值越大背景区域越接近黑色
im = Image.open('PICTURE\HandMade.jpg').convert('L') # 打开图像并转变为灰度模式
a = np.asarray(im).astype('float')
grad = np.gradient(a) # 取图像灰度的梯度值
grad_x, grad_y = grad # 分别取图像的横纵梯度值
grad_x = grad_x * depth / 100.
grad_y = grad_y * depth / 100.
dx = np.cos(vec_el) * np.cos(vec_az) # 光源对x轴的影响
dy = np.cos(vec_el) * np.sin(vec_az) # 光源对y轴的影响
dz = np.sin(vec_el) # 光源对z轴的影响
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A
a2 = 255*(dx * uni_x + dy * uni_y + dz * uni_z) # 光源归一化
a2 = a2.clip(0, 255) # 预防溢出
im2 = Image.fromarray(a2.astype('uint8')) # 重构图像
im2.save('HandMade_.jpg') # 保存图像
im2.show() # 显示图像

3. 效果展示:

原图                                                                              效果图

四、应用C

1. 简介:用numpy和matplotlib展现数学模型 —— 正态分布

2. 代码实现:

 # -*- coding:utf-8 -*-
''' 正态分布 '''
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt dx = 100 # 正态分布的均值
sigma = 15 # 标准差
x = dx + sigma * np.random.randn(10000) # 在均值周围产生符合正态分布的x值 num_bins = 50
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
# 直方图函数,x为x轴的值,normed=1表示为概率密度,即和为一,绿色方块,色深参数0.5.返回n个概率,直方块左边线的x值,及各个方块对象
y = mlab.normpdf(bins, dx, sigma) # 画一条逼近的曲线
plt.plot(bins, y, 'r--')
plt.xlabel('Smarts') # x轴标签
plt.ylabel('Probability') # y轴标签
plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$') # 中文标题 plt.subplots_adjust(left=0.15) # 左边距
plt.grid(True) # 打开网格线
plt.show() # 显示图片

3. 效果展示:

numpy 与 matplotlib 的应用的更多相关文章

  1. win7系统下python安装numpy,matplotlib,scipy和scikit-learn

    1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...

  2. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  3. 在Ubuntu 14.04 64bit上安装numpy和matplotlib库

    原文:http://blog.csdn.net/tao_627/article/details/44004541 按照这个成功安装! 机器学习是数据挖掘的一种实现形式,在学习<机器学习实战> ...

  4. 安装Numpy和matplotlib

    (1)测试程序     这是我从网上(http://www.open-open.com/lib/view/open1393488232380.html)找到的一个使用Numpy和matplotlib的 ...

  5. Linux入门(10)——Ubuntu16.04使用pip3和pip安装numpy,scipy,matplotlib等第三方库

    安装Python3第三方库numpy,scipy,matplotlib: sudo apt install python3-pip pip3 install numpy pip3 install sc ...

  6. 教你如何绘制数学函数图像——numpy和matplotlib的简单应用

    numpy和matplotlib的简单应用 一.numpy库 1.什么是numpy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表 ...

  7. python 数据分析工具之 numpy pandas matplotlib

    作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...

  8. 使用numpy与matplotlib.pyplot画图

    使用numpy与matplotlib.pyplot画图 1. 折线图 1 # -*- enccoding:utf-8 -*- 2 import numpy as np 3 import matplot ...

  9. ubuntu18.04下安装Anaconda及numpy、matplotlib

    为了学习深度学习,我需要首先掌握利用python进行科学计算的知识,顺便复习一下线性代数.微积分.概率论.当然,现在我要做的是安装Anaconda. 1.官网下载,linux版本:https://ww ...

随机推荐

  1. MySQL如何解决1209错误

            1209 - The MySQL server is running with the--read-only option so it cannot  execute this sta ...

  2. midi文件格式

    百度百科的midi文件格式写的非常详细,点个赞.这里备份一下,方便日后查看. midi文件由midi头和音轨组成,midi头中的信息包括midi头标志,音轨数量,音轨的演奏方式(并行/拼接等),4分音 ...

  3. Java集合中List,Set以及Map等集合体系详解

    转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...

  4. vue 配置了全局的http拦截器,单独某个组件不需要这个拦截器,如何设置

    之前写过关于全局配置http拦截器的随笔,现在有个需求,在微信支付时,生成二维码,页面显示一个遮罩层,二维码页面需要每两秒请求一次接口,若返回结果为已支付,则进行页面跳转,但因为全局http中load ...

  5. 牛客小白月赛13 小A的最短路(lca+RMQ)

    链接:https://ac.nowcoder.com/acm/contest/549/F来源:牛客网 题目描述 小A这次来到一个景区去旅游,景区里面有N个景点,景点之间有N-1条路径.小A从当前的一个 ...

  6. 回溯+DFS 强化

    1020. 飞地的数量 思路:从4条边界出发,把能遍历到的1全部变成0.剩下的1就是边界所不能到达的点,统计一下1的数量即可. 解题思路:DFS.  时间超越100%python用户提交 ,内存超越8 ...

  7. vue 打包后本地先自己启动服务 anywhere 非常好用

    :)nodejs服务器Anywhere Anywhere是一个随启随用的静态服务器,它可以随时随地将你的当前目录变成一个静态文件服务器的根目录. 一,安装node 在nodejs官网下载,安装后打开c ...

  8. Disk

    一.简介 二.其他 1)Disk I/O

  9. 使用gcc命令编译多个文件

    使用g++命令直接一次性编译多个文件 这里以简单的HelloWorld程序为例,假设我们一共有三个文件:main.cpp,HelloWorld.cpp和HelloWorld.h. 其中HelloWor ...

  10. python-常见用法

    一.注释 单行注释:#后全部注释 多行注释:'''所有内容'''  或者使用 """所有内容"""  ,多行注释用三对单引号或双引号包裹 二 ...