win10安裝anaconda後, 安裝pymc,命令列
conda install -c pymc
安裝matplotlib, 命令列
conda install matplotlib
進入ipython:
import matplotlib.pyplot as plt
import numpy as np
from numpy.random import randn
fig=plt.figure()
ax1=fig.add_subplot(2,2,1)
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,2,3)
ax1.plot([1,2,3,4])
ax2.plot([1,2,3,5])
#ax3.scatter(np.arange(30), np.arange(30)+3*randn(30))
ax3.plot([2,2,3,5])
fig, axes=plt.subplots(2, 2, sharex=true, sharey=true)
for i in range(2):
for j in range(2):
axes[i, j].hist(randn(500), bins=50, color='k', alpha=0.5) #柱狀圖
plt.subplots_adjust(wspace=0, hspace=0)
x=np.linspace(-1,1,5)
y=x+1
plt.xlim((-1,5)) #x座標的範圍,從-1到5
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks) #x座標上標尺只顯示-1到2, 但整個x軸的範圍仍是-1到5
plt.plot(x,y,'ob-')
x = np.random.randn(1000)
y1 = np.random.randn(len(x))
y2 = 1.8 + np.exp(x)
ax1 = plt.subplot(1,2,1)
ax1.scatter(x,y1,color='r',alpha=.3,edgecolors='white',label='no correl')
plt.xlabel('no correlation')
plt.grid(true)
plt.legend()
ax2 = plt.subplot(1,2,2) #顯示在第二幅圖上
ax2.scatter(x,y2,color='g',alpha=.3,edgecolors='gray',label='correl') #alpha透明度 edgecolors邊緣顏色 label圖例(結合legend使用)
plt.xlabel('correlation')
plt.grid(true)
plt.legend() #顯示圖例, 圖例的文字描述是上面label引數指定
plt.show()
x = np.random.randn(1000)
y1 = np.random.randn(len(x))
y2 = 1.8 + np.exp(x)
ax1 = plt.subplot()
#下面三個散點圖都顯示在一幅圖上
ax1.scatter(x,y1,color='r',alpha=.3,edgecolors='white',label='no correl')
ax1.scatter(x,y2,color='g',alpha=.3,edgecolors='gray',label='correl')
ax1.scatter(x,10+x,color='b',alpha=.3,edgecolors='gray',label='dong')
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.grid(true)
plt.legend()
from pylab import *
figure(1, figsize=(6,6))
ax = axes([0.1,0.1,0.8,0.8])
labels ='spring','summer','autumn','winter'
x=[15,30,45,10]
#explode=(0.1,0.2,0.1,0.1)
explode=(0.1,0,0,0)
pie(x, explode=explode, labels=labels, autopct='%1.1f%%', startangle=67) #餅狀圖
title('rainy days by season')
show()
//------------------------------------
import numpy as np
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy import stats
#設定顯示的字型,否則會亂碼
mpl.rcparams['font.sans-serif'] = [u'simhei'] #黑體,也可以是fangsong/kaiti等電腦上的字型
mpl.rcparams['axes.unicode_minus'] = false #對座標軸上的減號不進行設定,否則會亂碼
mu = 0
sigma = 1
#取51個點,把中間的0包含進去
x = np.linspace(mu - 3 * sigma, mu + 3 * sigma, 51)
#手動計算概率密度值
y = np.exp(-(x - mu) ** 2 / (2 * sigma ** 2)) / (math.sqrt(2 * math.pi) * sigma)
#背景白色
plt.figure(facecolor = 'w')
#'g-'表示綠色實線繪製線條,'ro'表示紅色圈繪製點;linewidth和markersize分別設定線的寬度和點的大小
plt.plot(x, y, 'g-', x, y, 'ro', linewidth = 2 , markersize = 8) #在同乙個圖上繪製線條和點
plt.xlabel('x', fontsize = 15)
plt.ylabel('y', fontsize = 15)
plt.title(u'高斯分布', fontsize = 18)
plt.grid(true)
plt.show()
//------------------------------------
import numpy as np
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
from scipy import stats
mpl.rcparams['font.sans-serif'] = [u'simhei']
mpl.rcparams['axes.unicode_minus'] = false
#產生10000個均勻分布的隨機值(不一定是均勻分布?),每個xi的值都在0~1之間
x = np.random.rand(10000)
plt.subplot(121) #'121'表示共一行兩列,現在繪製第一幅
#bins引數表示橫座標劃分為30個區域,alpha表示透明度
plt.hist(x, bins = 30, color = 'g', alpha = 0.5, label = u'均勻分布')
plt.legend(loc = 'upper right')
plt.grid()
//--------------------------------------
#驗證中心極限定理
t = 1000 #疊加1000次
a = np.zeros(10000)
for i in range(t):
a += np.random.uniform(-5, 5, 10000)
a /= t
plt.subplot(122) #繪製第二幅圖
# normed引數使得概率密度和為1,即面積
his = plt.hist(a, bins = 30, color = 'g', normed = true, alpha = 0.5, label = u'均勻分布疊加')
#his是乙個tuple,當normed為true時,his[0]表示對應的30個概率密度函式值陣列。his[1]表是橫座標邊界陣列
#print 'area: \n', sum(his[0] * np.diff(his[1]))
plt.legend(loc = 'upper right')
plt.grid()
plt.show()
元程式設計(TMP)掃盲
昨晚看 effective c 才知道了元程式設計 tmp 這個東東,今早決定寫個fibonacci數列試試,給自己掃個盲。就我目前了解,總的說來,最大特性就是 就是編譯期通過 開解做執行期的事。比如編譯期數值運算 可極大提高運算速度 編譯期斷言和契約,編譯期型別運算。但是tmp也不是沒缺點 難讀,...
Item 48 TMP程式設計介紹
item 47介紹了乙個advance的例子。如果用typeid的方式,會出現兩個問題。其中之一如下 出錯的原因,在於對advance例項化時,會發現其不支援隨機訪問,而使編譯器無法處理iter d這句話。所以,最後問題的解決要用過載而不是用if語句。這就是tmp程式設計 template meta...
Item 48 TMP程式設計介紹
item 47介紹了乙個advance的例子。如果用typeid的方式,會出現兩個問題。其中之一如下 templatevoid advance itert iter,distt d void main 出錯的原因,在於對advance例項化時,會發現其不支援隨機訪問,而使編譯器無法處理iter d這...