一、Numpy 库

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

引用:

import numpy as np

Numpy简单创建数组:

import numpy as np
# 创建简单的列表
a = [1, 2, 3, 4]
# 将列表转换为数组
b = np.array
(a)

Numpy查看数组属性:

数组元素个数:

b.size

数组形状:

b.shape

数组维度:

b.ndim

数组元素类型:

b.dtype

快速创建N维数组的api函数:

(1)创建10行10列的数值为浮点1的矩阵:

array_one = np.ones([10, 10])

(2)创建10行10列的数值为浮点0的矩阵:

array_zero = np.zeros([10, 10])

Numpy创建随机数组np.random

  • 均匀分布

    • np.random.rand(10, 10)创建指定形状(示例为10行10列)的数组(范围在0至1之间)
    • np.random.uniform(0, 100)创建指定范围内的一个数
    • np.random.randint(0, 100) 创建指定范围内的一个整数
  • 正态分布

    给定均值/标准差/维度的正态分布np.random.normal(1.75, 0.1, (2, 3)

NumPy 创建数组

ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建。

numpy.empty

numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

numpy.empty(shape, dtype = float, order = 'C')

参数说明:

参数 描述
shape 数组形状
dtype 数据类型,可选
order 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

numpy.zeros

创建指定大小的数组,数组元素以 0 来填充:

numpy.zeros(shape, dtype = float, order = 'C')

参数说明:

参数 描述
shape 数组形状
dtype 数据类型,可选
order 'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组

numpy.ones

创建指定形状的数组,数组元素以 1 来填充:

numpy.ones(shape, dtype = None, order = 'C')

NumPy 从已有的数组创建数组

numpy.asarray

numpy.asarray 类似 numpy.array,但 numpy.asarray 只有三个,比 numpy.array 少两个。

numpy.asarray(a, dtype = None, order = None)

参数说明:

参数 描述
a 任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组
dtype 数据类型,可选
order 可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

numpy.frombuffer

numpy.frombuffer 用于实现动态数组。

numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。

参数说明:

参数 描述
buffer 可以是任意对象,会以流的形式读入。
dtype 返回数组的数据类型,可选
count 读取的数据数量,默认为-1,读取所有数据。
offset 读取的起始位置,默认为0。

numpy.fromiter

numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。

numpy.fromiter(iterable, dtype, count=-1)
参数 描述
iterable 可迭代对象
dtype 返回数组的数据类型
count 读取的数据数量,默认为-1,读取所有数据
 

二、matplotlib库
matplotlib是python上的一个2D绘图库,它可以在夸平台上边出很多高质量的图像。综旨就是让简单的事变得更简单,让复杂的事变得可能。我们可以用matplotlib生成 绘图、直方图、功率谱、柱状图、误差图、散点图等 。
引用:
import matplotlib.pyplot as plt

散点图:

plt.scatter(X, Y, s=75, c=T, alpha=.5)

其中X,Y分别为横纵坐标;s为点的大小(optional);c为颜色设置(optional);alpha为透明度设置(optional),是一个小于等于1的值

图片附加信息:

plt.xlim((-1, 1))  #  设置x轴范围为(-1,1)
plt.ylim((-1, 1)) # 设置y轴范围为(-1,1)
plt.legend() # 显示图例
plt.show() # 显示绘图

柱状图:

x = np.arange(10)

y = 2**x + 10

plt.bar(x,y,facecolor='#9999ff',edgecolor='white')#柱颜色,柱边框颜色

for x,y in zip(x,y):#zip指把x,y结合为一个整体,一次可以读取一个x和一个y

    plt.text(x,y,'%.2f' % y,ha='center',va='bottom')#指字体在中间和柱最顶的顶部

plt.show()

等高图:

def f(x,y):

    #用来生成高度

    return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

x = np.linspace(-3,3,100)

y = np.linspace(-3,3,100)

X,Y = np.meshgrid(x,y)#将x,y指传入网格中

plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)#8指图中的8+1根线,绘制等温线,其中cmap指颜色

C = plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5)#colors指等高线颜色

plt.clabel(C,inline=True,fontsize=10)#inline=True指字体在等高线中

plt.xticks(())

plt.yticks(())

plt.show()

matplotlib绘制3D图:

from mpl_toolkits.mplot3d import Axes3D#动态图所需要的包

fig = plt.figure()

ax = Axes3D(fig)

x = np.arange(-4,4,0.25)#0.25指-4至4间隔为0.25

y = np.arange(-4,4,0.25)

X,Y = np.meshgrid(x,y)#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'))#rstride=1指x方向和y方向的色块大小

ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')#zdir指映射到z方向,-2代表映射到了z=-2

ax.set_zlim(-2,-2)

plt.show()

子图像:

plt.figure()

plt.subplot(2,2,1)#建立一个两行两列的画布,第一个

plt.plot([0,1],[0,1])

plt.subplot(2,2,2)#第二个

plt.plot([0,1],[0,1])

plt.subplot(2,2,3)#第三个

plt.plot([0,1],[0,1])

plt.subplot(2,2,4)#第四个

plt.plot([0,1],[0,1])

plt.show()

 动态图:
from matplotlib import animation#动态图所需要的包

fig,ax = plt.subplots()#子图像

x = np.arange(0,2*np.pi,0.01)

line, = ax.plot(x,np.sin(x))

def animate(i):

    line.set_ydata(np.sin(x+i/10))#用来改变的y对应的值

    return line,

def init():

    line.set_ydata(np.sin(x))#动态图初始图像

    return line,

ani = animation.FuncAnimation(fig=fig,func=animate,init_func=init,interval=20)#动态作图的方法,func动态图函数,init_func初始化函数,interval指图像改变的时间间隔

plt.show()

三、雷达图

python123 的成绩雷达图:

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 =
data = np.array([, , , , ]) #数据值
angles = np.linspace(, *np.pi, nAttr, endpoint=False)
data = np.concatenate((data, [data[]]))
angles = np.concatenate((angles, [angles[]]))
fig = plt.figure(facecolor="white")
plt.subplot(, polar=True)
plt.plot(angles,data,'bo-',color ='g',linewidth=)
plt.fill(angles,data,facecolor='g',alpha=0.25)
plt.thetagrids(angles*/np.pi, labels)
plt.figtext(0.52, 0.95, '广师小帅强的成绩雷达图', ha='center')
plt.grid(True)
plt.show()

运行程序结果如图:

四、手绘效果

#e17.1HandDrawPic.py
from PIL import Image
import numpy as np
vec_el = np.pi/2.2 # 光源的俯视角度,弧度值
vec_az = np.pi/. # 光源的方位角度,弧度值
depth = . # (-)
im = Image.open('C:\\Users\\Administrator\\Desktop\\timg.jpg').convert('L')
a = np.asarray(im).astype('float')
grad = np.gradient(a) #取图像灰度的梯度值
grad_x, grad_y = grad #分别取横纵图像梯度值
grad_x = grad_x*depth/.
grad_y = grad_y*depth/.
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** + grad_y** + .)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = ./A
a2 = *(dx*uni_x + dy*uni_y + dz*uni_z) #光源归一化
a2 = a2.clip(,)
im2 = Image.fromarray(a2.astype('uint8')) #重构图像
im2.save('fcityHandDraw.jpg')

原图:                                                                                                                                                                手绘效果:

                                                                           

五、数学规律图

绘制sigmoid函数:

import matplotlib.pyplot as plt

import numpy as np

def sigmoid(x):

    # 直接返回sigmoid函数

    return . / (. + np.exp(-x))

def plot_sigmoid():

    # param:起点,终点,间距

    x = np.arange(-, , 0.2)

    y = sigmoid(x)

    plt.plot(x, y)

    plt.show()
if __name__ == '__main__': plot_sigmoid()

结果如图:

python 科学计算与可视化的更多相关文章

  1. Python科学计算三维可视化(整理完结)

    中国MOOC<Pyhton计算计算三维可视化>总结 课程url:here ,教师:黄天宇,嵩天 下文的图片和问题,答案都是从eclipse和上完课后总结的,转载请声明. Python数据三 ...

  2. Python科学计算和可视化

    一.Numpy NumPy(Numeric Python)系统是 Python 的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表(nested list s ...

  3. python科学计算和可视化学习报告

    一丶numpy和matplotlib学习笔记 1. NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Pyth ...

  4. python科学计算与可视化

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

  5. python科学计算与可视化视频教程

    目录: 下载链接:https://www.yinxiangit.com/616.html 第一单元TVTK入门-1.mp4第一单元TVTK入门-2.mp4第一单元TVTK入门-3.mp4 第一单元TV ...

  6. python 科学计算及数据可视化

    第一步:利用python,画散点图. 第二步:需要用到的库有numpy,matplotlib的子库matplotlib.pyplot numpy(Numerical Python extensions ...

  7. windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等

    安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...

  8. Python科学计算库

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

  9. Python科学计算PDF

    Python科学计算(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VYs9BamMhCnu4rfN6TG5bg 提取码:2zzk 复制这段内容后打开百度网盘手机A ...

随机推荐

  1. 迅为iTOP-4418/6818开发板-驱动-IO初始化配置介绍和例程

    对于所有的处理器,pad 一般可以分为两大类:IO(输入输出).Power(VDD 和GDD).类似摄像头 IO.以太网 IO.PWM 的 IO 等等,都可以统称为 IO.一个 IO,有可能能够被配置 ...

  2. Django 内置分页器

    先导入Django内置的分页器 在商品列表页或者购物车列表页导入 在渲染list.html导入 然后在views后台渲染方法写入 打开list页面结果

  3. 什么是DAPP

    DAPP(Decentralized Application)去中心化的应用 DAPP可以是网站,也可以是手机app,只要主要逻辑和数据在区块链上就可以 在以太坊平台上,一个DAPP肯定基于一个或多个 ...

  4. Linux IO Scheduler(Linux IO 调度器)【转】

    每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交的request.I/O调度器的基本目的是将请求按照它们对应在块设 ...

  5. 通过fiddler和逍遥模拟器模拟抓包android手机

    环境说明 Fiddler/逍遥手机模拟器 安装在10.11.0.148的电脑中 逍遥模拟器会自动生成wifi连接到 10.11.0.148上网 开启https: 在模拟器中打开 http://代理:8 ...

  6. CSS之分组选择器和嵌套选择器

    分组选择器, 将一个样式应用于多个类,或者标签啥的 每个选择器用逗号隔开 <!DOCTYPE html> <html> <head> <meta charse ...

  7. + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException

    File C:\Users\danv\Documents\WindowsPowerShell\profile.ps1 cannot be loaded because the execution of ...

  8. [转自大神]js拖拽小总结

    https://blog.csdn.net/u013040887/article/details/83059094 权侵删 这里写的是一个原生js实现拖拽的效果,首先: 1.实现拖拽的三大事件,是要首 ...

  9. OpenStack共享组件

    一.云计算的前世今生 1.物理机架构,应用部署和运行在物理机上  2.虚拟化架构,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上  3.云计算架构,虚拟化提高了单台物理机的资源使用率 二.Open ...

  10. Android系统文件目录路径说明

    系统数据存储路径,如下:其中应用程序包名为:com.spt ContextWrapper类中,包含以下方法: 1. getFilesDir() --> 内部存储 @Override public ...