任务22 科学计算和可视化

Posted hrunjie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了任务22 科学计算和可视化相关的知识,希望对你有一定的参考价值。

 1 from PIL import Image
 2 import numpy as np
 3 
 4 a = np.asarray(Image.open(D:python_common_exerciseexercise	aylor.jpg).convert(L)).astype(float)
 5 
 6 depth = 10.     #(0-100)
 7 grad = np.gradient(a)       #取图像灰度的梯度值
 8 grad_x, grad_y = grad       #分别取横纵图像的梯度值
 9 grad_x = grad_x*depth/100.
10 grad_y = grad_y*depth/100.
11 A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
12 uni_x = grad_x/A
13 uni_y = grad_y/A
14 uni_z = 1./A
15 
16 vec_el = np.pi/2.2      # 光源的俯视角度,弧度值
17 vec_az = np.pi/4.       # 光源的方位角度,弧度值
18 dx = np.cos(vec_el)*np.cos(vec_az)  #光源对x 轴的影响
19 dy = np.cos(vec_el)*np.sin(vec_az)  #光源对y 轴的影响
20 dz = np.sin(vec_el)                 #光源对z 轴的影响
21 
22 b = 255*(dx*uni_x + dy*uni_y + dz*uni_z)    #光源归一化
23 b = b.clip(0,255)
24 
25 im = Image.fromarray(b.astype(uint8)) #重构图像
26 im.save(D:python_common_exerciseexercise	aylor_2.jpg)

技术图片

 

 

技术图片

 

 

 

2. numpy 和 matplotlib 笔记 

(1) numpy 

Numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素,虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中Numpy函数库中的matrix与MATLAB中matrices等价。

直接看一个例子:

1 #   生成数据 , 保存数据 , 读取保存数据
2 import numpy as np
3 x = np.arange(10)
4 print(x)
5 
6 np.save(save_x, x)
7 np.load(save_x.npy)

 

 1 # 数据形式
 2 import numpy as np
 3 a = np.mat(1,3;5,7)
 4 b = np.mat([[1,2],[3,4]])
 5 print(a)
 6 print(b)
 7 print(type(a))
 8 print(type(b))
 9 
10 c = np.array([[1,3],[4,5]])
11 print(c)
12 print(type(c))
输出:

[[1 3]
[5 7]]
[[1 2]
[3 4]]
<class ‘numpy.matrix‘>
<class ‘numpy.matrix‘>
[[1 3]
[4 5]]
<class ‘numpy.ndarray‘>

 

1 # 保存数据
2 import numpy as np
3 x = np.arange(10)
4 print(x)
5 np.save(save_x, x)
6 
7 #读取数据
8 np.load(save_x.npy)

 

(2)matplotlib

简单画图

import matplotlib.pyplot as plt
x = [0,1,2,3]
y = [0,1,2,3]
plt.plot(x, y)
plt.show()

技术图片

 

 

改变颜色和线条形式

import matplotlib.pyplot as plt
x = [0,1,2,3]
y = [0,1,2,3]
plt.plot(x, y,r--)
plt.show()

技术图片

 

 

画多个函数图像

import matplotlib.pyplot as plt
x1 = [0,1,2,3]
y1 = [0,1,2,3]
x2 = [2,4,6,8]
y2 = [4,8,12,16]
plt.plot(x1, y1,r-,x2,y2,k--)
plt.show()

技术图片

 

 

 

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,50)  # linspace 是划分多少等分
y = x**2 + 3*x + 2
plt.plot(x, y)
plt.show()

技术图片

 

 

成绩雷达图

#e19.1DrawDotaRadar.py
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=8
Python=np.array([88.7,85,90,95,93,96,100,98])
angles=np.linspace(0,2*np.pi,nAttr,endpoint=False)
Python=np.concatenate((Python,[Python[0]]))
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure(facecolor="white")
plt.subplot(111,polar=True)
plt.plot(angles,Python,bo-,color=g,linewidth=2)
plt.fill(angles,Python,facecolor=g,alpha=0.2)
plt.thetagrids(angles*180/np.pi,labels)
plt.figtext(0.52,0.95,python成绩分析图,ha=center)
plt.grid(True)
plt.savefig(dota_radar.JPG)
plt.show()

 

技术图片

 

以上是关于任务22 科学计算和可视化的主要内容,如果未能解决你的问题,请参考以下文章

15种Python片段去优化你的数据科学管道

科学计算和可视化

科学计算和可视化

科学计算和可视化

matlab软件是啥软件?有啥用途

科学计算可视化