Python知识整理_1

3D画图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 定义等高线高度函数
def f(x, y):
    return (1 - x / 2 + x ** 3 + y ** 3) * np.exp(-x ** 4 - y ** 2)+np.tan(np.sqrt(x**2+y**2))+x**2*y**2
#蝴蝶函数
def fx(t):
    return np.sin(t)*(np.e**np.cos(t)-2*np.cos(4*t)-np.sin(t/12)**5)
def fy(t):
    return np.cos(t)*(np.e**np.cos(t)-2*np.cos(4*t)-np.sin(t/12)**5)
   
fig=plt.figure()
ax1=fig.add_subplot(121,projection='3d')
x=y=np.arange(-3,3,0.25)
t=np.arange(0,12*np.pi,0.01)
X,Y=np.meshgrid(x,y)
#Z=np.sin(np.sqrt(X**2+Y**2))
Z=f(X,Y)
#print(np.max(Z),np.min(Z))
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_zlabel('z')
ax1.plot_surface(X,Y,Z,cmap=plt.cm.hot)#'binary'##scatter
ax1.set_title("3D")
ax2=fig.add_subplot(122)
Max=int(np.max(Z))
ax2.contourf(X,Y,Z,10,cmap=plt.cm.hot,alpha=0.5)#填充等高线的颜色, 8是等高线分为几部分
print(Max)
if Max<5:
    C=ax2.contour(X,Y,Z,20,cmap=plt.cm.hot)#等高线分几份,绘制等高线
else:
    C=ax2.contour(X,Y,Z,levels=range(0,Max,1),cmap=plt.cm.hot)#'rainbow'#等高线分几份,绘制等高线
plt.clabel(C,inline=True,fontsize=10)#给等高线上标数字
ax2.set_title("contour")
plt.tight_layout()
plt.xticks(())
plt.yticks(())
plt.show()

首先需要导入from mpl_toolkits.mplot3d import Axes3D,然后利用np.meshgrid生成三维网格,plot_surface用来生成三维立体图形;contour生成等高线;contourf为等高线填充背景;如果值只是单个图,可以使用以下命令:

fig=plt.figure(figsize=(10,6))
ax=Axes3D(fig)
.....

案例

柱状图的生成

这是神经网络中观察隐藏层数据分布的柱状图表示。

import numpy as np 
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1/(1+np.exp(-x))
def ReLu(x):
    return np.maximum(0,x)
def tanh(x):
    return np.tanh(x)
    
x=np.random.randn(1000,100)
node_num=100#个隐藏层的节点数
hidden_layer_size=5#隐藏层大小
activations={}#激活值
W={}
##########################################比较有意思的处理方式
for i in range(hidden_layer_size):
    if i!=0:
        x=activations[i-1]
    w=np.random.randn(node_num,node_num)*1/np.sqrt(node_num)#np.sqrt(node_num)
    W[i]=w
    z=np.dot(x,w)
    #a=sigmoid(z)
    a=tanh(z)
    activations[i]=a
    ##############################################################  
#plot

for i,a in activations.items():
    plt.subplot(1,len(activations),i+1)
    plt.hist(a.flatten(),30,range=(0,1))#range表示x的范围(x.min,x.max)
    plt.title(str(i+1)+'-layer')
plt.show()

其中关于作图最重要的是:

for i,a in activations.items():
    plt.subplot(1,len(activations),i+1)
    plt.hist(a.flatten(),30,range=(0,1))#range表示x的范围(x.min,x.max)
    plt.title(str(i+1)+'-layer')
plt.show()

柱状图

有序字典

from collections import OrderedDict

python中的字典(按照hash来存储)是无序的,模块collections的子类OrderedDict,实现了对字典对象中元素的排序。

为python导入新的运行目录

import sys, os
sys.path.append("新目录") 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值