Windows10+Python3下安裝NumPy+SciPy+Matplotlib,windows10numpy
Numpy、SciPy、MatplotLib是Python下從事科學計算必不可少的庫。我在用其他的方法安裝時出現各種問題,發現直接安裝.whl包是最快且不報錯的方法。
1.下載.whl包
在下面的網站中找需要的.whl檔案下載
http://www.lfd.uci.edu/~gohlke/pythonlibs/
要和自己本地安裝的版本一致,我選擇的whl檔案是:
numpy-1.13.0+mkl-cp36-cp36m-win32.whl
scipy-0.19.1-cp36-cp36m-win32.whl
matplotlib-2.0.2-cp36-cp36m-win32.whl
2.開始在命令列安裝
>pip3 install c:\(whl檔案下載的路徑)\numpy-1.13.0+mkl-cp36-cp36m-win32.whl
>pip3 install c:\(whl檔案下載的路徑)\scipy-0.19.1-cp36-cp36m-win32.whl
>pip3 install c:\(whl檔案下載的路徑)\matplotlib-2.0.2-cp36-cp36m-win32.whl
如果不出意外,這就都安裝好了。
3.開始測試
測試代碼來自:http://www.cnblogs.com/jasonfreak/p/5441512.html 感謝作者
1 from numpy import array 2 from numpy.random import normal 3 from matplotlib import pyplot 4 5 def genData(): 6 heights = [] 7 weights = [] 8 grades = [] 9 N = 10000 10 11 for i in range(N): 12 while True: 13 # 身高服從均值172,標準差為6的常態分佈 14 height = normal(172, 6) 15 if 0 < height: break 16 while True: 17 # 體重由身高作為自變數的線性迴歸模型產生,誤差服從標準常態分佈 18 weight = (height - 80) * 0.7 + normal(0, 1) 19 if 0 < weight: break 20 while True: 21 # 分數服從均值為70,標準差為15的常態分佈 22 score = normal(70, 15) 23 if 0 <= score and score <= 100: 24 grade = 'E' if score < 60 else ( 25 'D' if score < 70 else ('C' if score < 80 else ('B' if score < 90 else 'A'))) 26 break 27 heights.append(height) 28 weights.append(weight) 29 grades.append(grade) 30 return array(heights), array(weights), array(grades) 31 32 33 # 繪製柱狀圖 34 def drawBar(grades): 35 xticks = ['A', 'B', 'C', 'D', 'E'] 36 gradeGroup = {} 37 # 對每一類成績進行頻數統計 38 for grade in grades: 39 gradeGroup[grade] = gradeGroup.get(grade, 0) + 1 40 # 建立柱狀圖 41 # 第一個參數為柱的橫座標 42 # 第二個參數為柱的高度 43 # 參數align為柱的對齊,以第一個參數為參考標準 44 pyplot.bar(range(5), [gradeGroup.get(xtick, 0) for xtick in xticks], align='center') 45 46 # 設定柱的文字說明 47 # 第一個參數為文字說明的橫座標 48 # 第二個參數為文字說明的內容 49 pyplot.xticks(range(5), xticks) 50 51 # 設定橫座標的文字說明 52 pyplot.xlabel('Grade') 53 # 設定縱座標的文字說明 54 pyplot.ylabel('Frequency') 55 # 設定標題 56 pyplot.title('Grades Of Male Students') 57 # 繪圖 58 pyplot.show() 59 60 61 #繪製餅形圖 62 def drawPie(grades): 63 labels = ['A', 'B', 'C', 'D', 'E'] 64 gradeGroup = {} 65 for grade in grades: 66 gradeGroup[grade] = gradeGroup.get(grade, 0) + 1 67 #建立餅形圖 68 #第一個參數為扇形的面積 69 #labels參數為扇形的解說文字 70 #autopct參數為扇形佔比的顯示格式 71 pyplot.pie([gradeGroup.get(label, 0) for label in labels], labels=labels, autopct='%1.1f%%') 72 pyplot.title('Grades Of Male Students') 73 pyplot.show() 74 75 76 #繪製長條圖 77 def drawHist(heights): 78 #建立長條圖 79 #第一個參數為待繪製的定量資料,不同於定性資料,這裡並沒有事先進行頻數統計 80 #第二個參數為劃分的區間個數 81 pyplot.hist(heights, 100) 82 pyplot.xlabel('Heights') 83 pyplot.ylabel('Frequency') 84 pyplot.title('Heights Of Male Students') 85 pyplot.show() 86 87 88 #繪製累積曲線 89 def drawCumulativeHist(heights): 90 #建立累積曲線 91 #第一個參數為待繪製的定量資料 92 #第二個參數為劃分的區間個數 93 #normed參數為是否無量綱化 94 #histtype參數為'step',繪製階梯狀的曲線 95 #cumulative參數為是否累積 96 pyplot.hist(heights, 20, normed=True, histtype='step', cumulative=True) 97 pyplot.xlabel('Heights') 98 pyplot.ylabel('Frequency') 99 pyplot.title('Heights Of Male Students')100 pyplot.show()101 102 103 #繪製散佈圖104 def drawScatter(heights, weights):105 #建立散佈圖106 #第一個參數為點的橫座標107 #第二個參數為點的縱座標108 pyplot.scatter(heights, weights)109 pyplot.xlabel('Heights')110 pyplot.ylabel('Weights')111 pyplot.title('Heights & Weights Of Male Students')112 pyplot.show()113 114 115 #繪製盒鬚圖116 def drawBox(heights):117 #建立盒鬚圖118 #第一個參數為待繪製的定量資料119 #第二個參數為資料的文字說明120 pyplot.boxplot([heights], labels=['Heights'])121 pyplot.title('Heights Of Male Students')122 pyplot.show()123 124 data = genData()125 print(data)126 heights = data[0]127 weights = data[1]128 grades = data[2]129 drawBar(grades)130 drawPie(grades)131 drawHist(heights)132 drawCumulativeHist(heights)133 drawScatter(heights, weights)134 drawBox(heights)
運行結果:
drawBar(grades)
drawPie(grades)
drawHist(heights)
drawCumulativeHist(heights)
drawScatter(heights, weights)
drawBox(heights)
成功!