Numpy与Matplotlib
一、Numpy
numpy支持大量的维度数组和矩阵运算,对数组运算提供了大量的数学函数库!
numpy比Python列表更具优势,其中一个优势便是速度。在对大型数组执行操作时,numpy的速度比Python列表的速度快了好几百。因为numpy数组本身能节省内存,并且numpy在执行算术、统计和线性代数运算时采用了优化算法。
numpy的另一个强大功能是具有可以表示向量和矩阵的多维数组数据结构。numpy对矩阵运算进行了优化,使我们能够高效地执行线性代数运算,使其非常适合解决机器学习问题。
与Python列表相比,numpy具有的另一个强大优势是具有大量优化的内置数学函数。这些函数使你能够非常快速地进行各种复杂的数学计算,并且用到很少代码(无需使用复杂的循环),使程序更容易读懂和理解。
1、简单创建数组
a = [1, 2, 3]
b = np.array(a)
c = np.array([[0, 1, 2, 10],
[12, 13, 100, 101],
[102, 110, 112, 113]], int)
print(c)
print(b)
2、创建随机数组
array_rand = np.random.rand(10, 10, 4)
print(array_rand)
print(array_rand.ndim)
3、数组的复制
after_array = array_normal[:3, 2:4].copy()
copy_array = np.copy(array_normal[:, 2:4])
4、数组运算
# 循环数组行和列,每一个数值都加5
score[:, :] = score[:, :]+5
print(score)
# 循环数组行和列,每一个数值都减5
score[:, :] = score[:, :]-5
print(score)
# 循环数组行和列,每一个数值都乘以5
score[:, :] = score[:, :]*5
print(score)
# 循环数组行和列,每一个数值都除以5
score[:, :] = score[:, :]/5
print(score)
# 循环数组行和列,每一个数值除以5取整
score[:, :] = score[:, :] // 5
print(score)
# 循环数组行和列,每一个数值除以5取模
score[:, :] = score[:, :] % 5
print(score)
二、Matplotlib
Matplotlib 是Python中类似 MATLAB 的绘图工具,熟悉 MATLAB 也可以很快的上手 Matplotlib。
1、matplotlib图标正常显示中文
import matplotlib.pyplot as plt
plt.rcParams['font.sas-serig']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
2、为项目设置matplotlib参数
配置文件包括以下配置项
axex: 设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示
backend: 设置目标暑促TkAgg和GTKAgg
figure: 控制dpi、边界颜色、图形大小、和子区( subplot)设置
font: 字体集(font family)、字体大小和样式设置
grid: 设置网格颜色和线性
legend: 设置图例和其中的文本的显示
line: 设置线条(颜色、线型、宽度等)和标记
patch: 是填充2D空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置等。
savefig: 可以对保存的图形进行单独设置。例如,设置渲染的文件的背景为白色。
verbose: 设置matplotlib在执行期间信息输出,如silent、helpful、debug和debug-annoying。
xticks和yticks: 为x,y轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。
3、颜色
可以通过调用matplotlib.pyplot.colors()得到matplotlib支持的所有颜色。
|
别名 |
颜色 |
别名 |
颜色 |
|
b |
蓝色 |
g |
绿色 |
|
r |
红色 |
y |
黄色 |
|
c |
青色 |
k |
黑色 |
|
m |
洋红色 |
w |
白色 |
三、雷达图
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'#方便中文能够显示出来
matplotlib.rcParams['font.sans-serif']=['SimHei']
labels=np.array(['第一次作业','第二次作业','第三次作业','第四次作业','第五次作业','第六次作业'])#标签名
nAttr=6#雷达图中六边形边数
data = np.array([5,10,9,10,10,7])#雷达图中标签的数据值
angles = np.linspace(0,2*np.pi,nAttr,endpoint=False)#一哥标签点到另一个标签点画笔所需旋转的角度值,取决于nAttr的大小
data = np.concatenate((data,[data[0]]))
angles = np.concatenate((angles,[angles[0]]))
fig = plt.figure(facecolor="white" )
plt.subplot(111,polar=True)
plt.plot(angles,data,'bo-',color='g',linewidth=2)#画出雷达图中不规则的六边形
plt.fill(angles,data,facecolor='g',alpha=0.25)#填充半透明颜色,即不规则的六边形颜色
plt.thetagrids(angles*180/np.pi,labels)#为雷达图设置标签,就是labels里的文字
plt.figtext(0.52,0.95,'em对的——成绩表',ha='center')#命名雷达图的名字
plt.grid(True)
plt.savefig('作业成绩雷达图.JPG')#保存雷达图的图片
plt.show()
效果如下图所示

四、手绘图效果
from PIL import Image
import numpy as np
vec_el = np.pi/3.3# 光源的俯视角度,弧度值
vec_az = np.pi/9#光源的方位角度,弧度值
depth = 5#(0-100)值越大,整体画面灰度值较深,有近似浮雕的效果;值越小,背景区域接近白色
im = Image.open('Wade.png').convert('L')
a = np.asarray(im).astype('float')
grad = np.gradient(a)#取图像灰度的梯度值
grad_x,grad_y = grad#分别取横纵图像梯度值
grad_x = grad_x+depth/100.
gred_y = grad_y+depth/100.
dx = np.cos(vec_el)*np.cos(vec_az)#光源对x轴的影响
dy = np.cos(vec_el)*np.cos(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)#预防溢出0~255这个区间
im2 = Image.fromarray(a2.astype('uint8'))#重构图像
im2.save('Wade6.png')
原图如下

运行程序后,如下

以及各种效果如下:


Numpy与Matplotlib的更多相关文章
- win7系统下python安装numpy,matplotlib,scipy和scikit-learn
1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
- 在Ubuntu 14.04 64bit上安装numpy和matplotlib库
原文:http://blog.csdn.net/tao_627/article/details/44004541 按照这个成功安装! 机器学习是数据挖掘的一种实现形式,在学习<机器学习实战> ...
- 安装Numpy和matplotlib
(1)测试程序 这是我从网上(http://www.open-open.com/lib/view/open1393488232380.html)找到的一个使用Numpy和matplotlib的 ...
- Linux入门(10)——Ubuntu16.04使用pip3和pip安装numpy,scipy,matplotlib等第三方库
安装Python3第三方库numpy,scipy,matplotlib: sudo apt install python3-pip pip3 install numpy pip3 install sc ...
- 教你如何绘制数学函数图像——numpy和matplotlib的简单应用
numpy和matplotlib的简单应用 一.numpy库 1.什么是numpy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表 ...
- python 数据分析工具之 numpy pandas matplotlib
作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...
- 使用numpy与matplotlib.pyplot画图
使用numpy与matplotlib.pyplot画图 1. 折线图 1 # -*- enccoding:utf-8 -*- 2 import numpy as np 3 import matplot ...
- numpy 与 matplotlib 的应用
numpy 与 matplotlib 的应用 一.库函数介绍 1. numpy库 NumPy(Numeric Python)提供了一个N维的数组类型ndarray,Numpy底层使用C语言编写,内部解 ...
- ubuntu18.04下安装Anaconda及numpy、matplotlib
为了学习深度学习,我需要首先掌握利用python进行科学计算的知识,顺便复习一下线性代数.微积分.概率论.当然,现在我要做的是安装Anaconda. 1.官网下载,linux版本:https://ww ...
随机推荐
- U3D学习资料收集
1,风宇冲的博客 2,gkEngine 3,@浅墨_毛星云 4,聊聊引擎底层如何实现BRDF渲染算法
- 超详细的遗传算法(Genetic Algorithm)解析
https://blog.csdn.net/u010451580/article/details/51178225 https://www.jianshu.com/p/c82f09adee8f 00 ...
- 【题解】洛谷 P1014 【Cantor表】
1. 我们先引入三角形数的概念: >定数目的点或圆在等距离的排列下可以形成一个等边三角形,这样的数被称为三角形数. >古希腊著名科学家毕达哥拉斯把数1,3,6,10,15,21……这些数量 ...
- information_schema.COLUMNS
MySQL的information_schema库中有个COLUMNS表,里面记录了mysql所有库中所有表的字段信息,该表信息如下: COLUMNS表的每一条记录都对应了数据库中某个表的某个字段,该 ...
- 爬虫之Splash
Splash 是一个JavaScript渲染服务,是一个带有HTTP API 的轻量级浏览器,同时它对接了Python中Twisted和QT库. 1.功能介绍 1)异步方法处理多个网页渲染过程: 2) ...
- 有关Linux ipv6模块加载失败的问题
有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载. 主要检查内容: ...
- Homework:小写字母转大写字母
// 功能: // 从键盘上输入单个字符 // 如果是小写字母,则转换成大写后输出 // 否则,什么也不做,原样输出 #include <stdio.h> int main() { cha ...
- 虚拟机JVM
虚拟机组成:类加载器,运行时数据区,执行引擎 运行时数据区:堆,栈,方法区,程序计数器,本地方法栈 堆:对象实例 栈:入栈出栈,线程的执行 栈帧:一个方法一个 栈的结构:放 局部变量表,操作数栈,动态 ...
- 云笔记项目-Spring事务学习-传播MANDATORY
接下来测试事务传播属性MANDATORY Service层 所有Service层实现类都设置事务传播属性为MANDATORY. LayerT层代码 package LayerT; import jav ...
- freeswitch 使用info显示的通道变量
2019-01-20 11:57:30.167311 [INFO] mod_dptools.c:1743 CHANNEL_DATA:Channel-State: [CS_EXECUTE]Channel ...