一.numpy库和matplotlib库的学习

  (1)numpy库介绍:科学计算包,支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,并可与C++/Fortran语言无缝结合

      np.array([1,2,3])列表转换为数组;np.array((1,2,3))元组转换为数组; np.array(range(5))把range对象转换为数组;np.arange(8)类似于内置的range()函数

      np.linspace(0,10,11,endpoint = False)等差数组不包含终点

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

    

二.两个库的结合使用实例

# -*- coding: utf-8 -*-
"""
Spyder Editor This is a temporary script file.
"""
print("开始") 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 = 7 #边数
data = np.array([95,85,90,95,80,85,100]) #数据值
angles = np.linspace(0,2*np.pi,nAttr,endpoint=False) #角度设置,0-2PI,分隔7次
data = np.concatenate((data,[data[0]])) #将数据和角度的数组首尾闭合,便于用plot函数绘制
angles = np.concatenate((angles,[angles[0]]))
fig = plt.figure(facecolor="pink") #图形外的周边颜色
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) #设置标签例如第X周
plt.figtext(0.52,0.95,'14-Kind的成绩图',ha='center') #设置标题
plt.grid(True)
plt.savefig('dota_radar.JPG')
plt.show()

效果图片:

三.自定义手绘风

代码如下:

# -*- coding:utf-8 -*-
import numpy as np
from PIL import Image class picture: def __init__ (self,position):
self.position = position def Hand_drawn_style(self):
vec_el = np.pi/2 # 光源的俯视角度,弧度值
vec_az = np.pi/3 # 光源的方位角度,弧度值
depth = 6 # 深度权值,值越小背景区域越接近白色,值越大背景区域越接近黑色
im = Image.open(self.position).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('4d0424dd81_.jpg') # 保存图像
im2.show() # 显示图像 if __name__ =='__main__':
position = '4d0424dd81.jpg'
picture(position).Hand_drawn_style()

效果图:

四.正态分布图

代码

import numpy as np
import matplotlib
import scipy.stats
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab if __name__ == "__main__":
# 期望0,标准差1,条数50
mu, sigma, num_bins = 0, 1, 500
# 1M个随机数
x = mu + sigma * np.random.randn(10000) # 正态分布的数据, 颜色的透明度0.5
n, bins, patches = plt.hist(x, num_bins, density=True, facecolor='blue', alpha=0.5)
# 直方图函数,x为x轴的值,normed=1表示为概率密度,
#即和为一,绿色方块,色深参数0.5.返回n个概率,直方块左边线的x值,及各个方块对象
# 拟合曲线
y = scipy.stats.norm.pdf(bins, mu, sigma)
plt.plot(bins, y, 'r--')
plt.xlabel('Expectation')
plt.ylabel('Probability')
plt.title('histogram of normal distribution: $\mu = 0$, $\sigma=1$') plt.subplots_adjust(left=0.15) #左边距
plt.grid(True) #打开网格线
plt.show()

效果图片

2019-04-20 Python之科学计算库学习总结的更多相关文章

  1. windows下如何快速优雅的使用python的科学计算库?

    Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...

  2. ubuntu14.04 下安装 gsl 科学计算库

    GSL(GNU Scientific Library)作为三大科学计算库之一,除了涵盖基本的线性代数,微分方程,积分,随机数,组合数,方程求根,多项式求根,排序等,还有模拟退火,快速傅里叶变换,小波, ...

  3. python科学计算库的numpy基础知识,完美抽象多维数组(原创)

    #导入科学计算库 #起别名避免重名 import numpy as np #小技巧:从外往内看==从左往右看 从内往外看==从右往左看 #打印版本号 print(np.version.version) ...

  4. Python科学计算库

    Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...

  5. Python科学计算库Numpy

    Python科学计算库Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1.简 ...

  6. python科学计算库numpy和绘图库PIL的结合,素描图片(原创)

    # 导入绘图库 from PIL import Image #导入科学计算库 import numpy as np #封装一个图像处理工具类 class TestNumpy(object): def ...

  7. 科学计算库Numpy基础&提升(理解+重要函数讲解)

    Intro 对于同样的数值计算任务,使用numpy比直接编写python代码实现 优点: 代码更简洁: numpy直接以数组.矩阵为粒度计算并且支持大量的数学函数,而python需要用for循环从底层 ...

  8. 使用python做科学计算

    这里总结一个guide,主要针对刚开始做数据挖掘和数据分析的同学 说道统计分析工具你一定想到像excel,spss,sas,matlab以及R语言.R语言是这里面比较火的,它的强项是强大的绘图功能以及 ...

  9. 使用Python做科学计算初探(转)

    今天在搞定Django框架的blog搭建后,尝试一下python的科学计算能力. python的科学计算有三剑客:numpy,scipy,matplotlib. numpy负责数值计算,矩阵操作等: ...

随机推荐

  1. jade模板 注意事项

    1.   jade模板 语法 doctype html html head body header div 2.  添加内容:直接在标签后边加空格 直接写内容 如下: div  我要写的内容 3.  ...

  2. 通过语法设置DNS解析

    通过语法设置DNS解析 # 来自 https://dns.he.net/?action=logout # 语法 http://[你的域名]:[你的密码]@dyn.dns.he.net/nic/upda ...

  3. 【数据库】MySql分割字符串

    上论坛时看到一个骨骼清奇的分割字符串算法. DROP TABLE IF EXISTS Tmp_AreaCode; CREATE TABLE Tmp_AreaCode( string ) )ENGINE ...

  4. SOUI taobao SVN目录结构说明

  5. ionic2中使用极光IM的WebSDK实现即时聊天

    本文主要介绍如何在ionic项目中集成极光IM的WebSDK,详细文档可参考官方介绍. 一.准备 1. 注册激光账号,进入开发者服务页面创建应用. 2. 创建应用后须完成对应平台的推送设置,进行应用或 ...

  6. vue 获取dom的css属性值

    <template> <div id="topInfo" ref="topInfo" style="width: 200px;hei ...

  7. LBS(Location Based Service)(基于位置的服务)

    LBS(Location Based Service)(基于位置的服务) Android 中定位方式基本可以分为两种:GPS定位,网络定位. GPS定位的工作原理是基于手机内置的GPS硬件直接和卫星进 ...

  8. python 将list的值赋值给变量

    list中有n个值,赋值给k个变量:a1, a2, ……,ak n = k时:a1, a2, ……,ak = list n > k时:使用1式报错:ValueError: too many va ...

  9. Android的BroadcastReceiver组件

    BroadcastReceiver的作用: BroadcastReceiver,是和Intent有很大关系的Android组件. Android中的 Intent 可以用来: 1. 在应用程序内部和应 ...

  10. Flex核心属性整理

    main axis和cross axis的位置不一定是水平和垂直的,以flex-direction的值即为主轴方向 justify-content:主轴对齐方式 space-between:将多余空间 ...