2019-04-20 Python之科学计算库学习总结
一.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之科学计算库学习总结的更多相关文章
- windows下如何快速优雅的使用python的科学计算库?
Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...
- ubuntu14.04 下安装 gsl 科学计算库
GSL(GNU Scientific Library)作为三大科学计算库之一,除了涵盖基本的线性代数,微分方程,积分,随机数,组合数,方程求根,多项式求根,排序等,还有模拟退火,快速傅里叶变换,小波, ...
- python科学计算库的numpy基础知识,完美抽象多维数组(原创)
#导入科学计算库 #起别名避免重名 import numpy as np #小技巧:从外往内看==从左往右看 从内往外看==从右往左看 #打印版本号 print(np.version.version) ...
- Python科学计算库
Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...
- Python科学计算库Numpy
Python科学计算库Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1.简 ...
- python科学计算库numpy和绘图库PIL的结合,素描图片(原创)
# 导入绘图库 from PIL import Image #导入科学计算库 import numpy as np #封装一个图像处理工具类 class TestNumpy(object): def ...
- 科学计算库Numpy基础&提升(理解+重要函数讲解)
Intro 对于同样的数值计算任务,使用numpy比直接编写python代码实现 优点: 代码更简洁: numpy直接以数组.矩阵为粒度计算并且支持大量的数学函数,而python需要用for循环从底层 ...
- 使用python做科学计算
这里总结一个guide,主要针对刚开始做数据挖掘和数据分析的同学 说道统计分析工具你一定想到像excel,spss,sas,matlab以及R语言.R语言是这里面比较火的,它的强项是强大的绘图功能以及 ...
- 使用Python做科学计算初探(转)
今天在搞定Django框架的blog搭建后,尝试一下python的科学计算能力. python的科学计算有三剑客:numpy,scipy,matplotlib. numpy负责数值计算,矩阵操作等: ...
随机推荐
- mysql配置文件参数详解
(一) [client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedir ...
- String Formatting in C#
原文地址 http://blog.stevex.net/string-formatting-in-csharp/ When I started working with the .NET framew ...
- tar 压缩归档
压缩归档 掌握归档的定义:归档(archiving)就是将许多文件(或目录)打包成一个文件. 了解归档的目的:归档的目的就是方便备份.还原及文件的传输操作. 掌握tar命令的功能:将多个文件(也可能包 ...
- 移动端1px边框实现
问题描述:移动端iPhone上的1px边框看起来像2px那么粗.问题分析:不同的手机有不同的像素密度,在window对象中有一个devicePixelRatio属性,它可以反应设备的像素与css中的像 ...
- (三)ajax请求不同源之服务器代理跨域
一.基本原理 Server Proxy,顾名思义,在服务器端设置一个代理,由服务器端向跨域的网站发出请求,再将请求结果返回给前端,成功避免同源策略的限制. 二.客户端和服务端代码 1.在localho ...
- 第四篇flask中模板语言 jinja2
Flask中默认的模板语言是Jinja2 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {, 'gender': '中'}, STUDENT_LIST = [ {, 'gende ...
- 最优装载—dp
最优装载—dp 动态规划 一 问题描述 二 问题分析 三 代码实现 package dp_Loading; import java.io.BufferedWriter; import java.io. ...
- Mybatis 通用 Mapper 和 Spring 集成
依赖 正常情况下,在原有依赖基础上增加的 mapper-spring. <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spr ...
- Java_图片切片
package com.creditease.fetch.credit.util.similarity; import java.awt.image.BufferedImage; import jav ...
- ant design select placeholder不生效原因
当select的value绑定一个state默认值时,如果默认值是''或null时,placeholder不生效 解决方案:默认值设为undefined