友情提示:本文較長,是教程的一部分,,值得收藏,,文末提供下載方式哦,!覺得內(nèi)容精彩一定要點一下“好看”哦,! NumPy - 簡介NumPy 是一個 Python 包,。它代表 “Numeric Python”。它是一個由多維數(shù)組對象和用于處理數(shù)組的例程集合組成的庫,。 Numeric,,即 NumPy 的前身,是由 Jim Hugunin 開發(fā)的,。也開發(fā)了另一個包 Numarray ,,它擁有一些額外的功能。2005年,,Travis Oliphant 通過將 Numarray 的功能集成到 Numeric 包中來創(chuàng)建 NumPy 包,。這個開源項目有很多貢獻者。 NumPy 操作使用NumPy,,開發(fā)人員可以執(zhí)行以下操作:
NumPy – MatLab 的替代之一NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用,。這種組合廣泛用于替代 MatLab,,是一個流行的技術(shù)計算平臺,。但是,Python 作為 MatLab 的替代方案,,現(xiàn)在被視為一種更加現(xiàn)代和完整的編程語言,。 NumPy 是開源的,這是它的一個額外的優(yōu)勢,。 NumPy - 環(huán)境
標準的 Python 發(fā)行版不會與 NumPy 模塊捆綁在一起,。一個輕量級的替代方法是使用流行的 Python 包安裝程序 pip 來安裝 NumPy,。
啟用 NumPy 的最佳方法是使用特定于您的操作系統(tǒng)的可安裝的二進制包。這些二進制包含完整的 SciPy 技術(shù)棧(包括 NumPy,,SciPy,,matplotlib,IPython,,SymPy 以及 Python 核心自帶的其它包),。 NumPy - Ndarray 對象NumPy 中定義的最重要的對象是稱為
從
numpy.array 它從任何暴露數(shù)組接口的對象,或從返回數(shù)組的任何方法創(chuàng)建一個ndarray,。
上面的構(gòu)造器接受以下參數(shù):
看看下面的例子來更好地理解。 示例 1import numpy as np 輸出如下:
示例 2# 多于一個維度 輸出如下:
示例 3# 最小維度 輸出如下:
示例 4# dtype 參數(shù) 輸出如下:
**ndarray ** 對象由計算機內(nèi)存中的一維連續(xù)區(qū)域組成,,帶有將每個元素映射到內(nèi)存塊中某個位置的索引方案,。內(nèi)存塊以按行(C 風(fēng)格)或按列(FORTRAN 或 MatLab 風(fēng)格)的方式保存元素。 NumPy - 數(shù)據(jù)類型NumPy 支持比 Python 更多種類的數(shù)值類型,。下表顯示了 NumPy 中定義的不同標量數(shù)據(jù)類型,。
NumPy 數(shù)字類型是 數(shù)據(jù)類型對象 (dtype)數(shù)據(jù)類型對象描述了對應(yīng)于數(shù)組的固定內(nèi)存塊的解釋,,取決于以下方面:
字節(jié)順序取決于數(shù)據(jù)類型的前綴
numpy.dtype(object, align, copy) 參數(shù)為:
示例 1
輸出如下: int32 示例 2
輸出如下: int32 示例 3
輸出如下: >i4 下面的例子展示了結(jié)構(gòu)化數(shù)據(jù)類型的使用。這里聲明了字段名稱和相應(yīng)的標量數(shù)據(jù)類型,。 示例 4
輸出如下: [('age', 'i1')] 示例 5
輸出如下: [(10,) (20,) (30,)] 示例 6
輸出如下: [10 20 30] 示例 7以下示例定義名為 student 的結(jié)構(gòu)化數(shù)據(jù)類型,其中包含字符串字段
輸出如下: [('name', 'S20'), ('age', 'i1'), ('marks', '<f4')] 示例 8
輸出如下: [('abc', 21, 50.0), ('xyz', 18, 75.0)] 每個內(nèi)建類型都有一個唯一定義它的字符代碼:
NumPy - 數(shù)組屬性這一章中,,我們會討論 NumPy 的多種數(shù)組屬性,。
|
序號 | 形狀及描述 |
---|---|
1. | reshape 不改變數(shù)據(jù)的條件下修改形狀 |
2. | flat 數(shù)組上的一維迭代器 |
3. | flatten 返回折疊為一維的數(shù)組副本 |
4. | ravel 返回連續(xù)的展開數(shù)組 |
numpy.reshape
這個函數(shù)在不改變數(shù)據(jù)的條件下修改形狀,它接受如下參數(shù):
numpy.reshape(arr, newshape, order)
其中:
arr
:要修改形狀的數(shù)組
newshape
:整數(shù)或者整數(shù)數(shù)組,,新的形狀應(yīng)當兼容原有形狀
order
:'C'
為 C 風(fēng)格順序,,'F'
為 F 風(fēng)格順序,'A'
為保留原順序,。
例子
import numpy as np
a = np.arange(8)
print '原始數(shù)組:'
print a
print '\n'
b = a.reshape(4,2)
print '修改后的數(shù)組:'
print b
輸出如下:
原始數(shù)組:
[0 1 2 3 4 5 6 7]
修改后的數(shù)組:
[[0 1]
[2 3]
[4 5]
[6 7]]
numpy.ndarray.flat
該函數(shù)返回數(shù)組上的一維迭代器,,行為類似 Python 內(nèi)建的迭代器。
例子
import numpy as np
a = np.arange(8).reshape(2,4)
print '原始數(shù)組:'
print a
print '\n'
print '調(diào)用 flat 函數(shù)之后:'
# 返回展開數(shù)組中的下標的對應(yīng)元素
print a.flat[5]
輸出如下:
原始數(shù)組:
[[0 1 2 3]
[4 5 6 7]]
調(diào)用 flat 函數(shù)之后:
5
numpy.ndarray.flatten
該函數(shù)返回折疊為一維的數(shù)組副本,,函數(shù)接受下列參數(shù):
ndarray.flatten(order)
其中:
order
:'C'
-- 按行,,'F'
-- 按列,'A'
-- 原順序,,'k'
-- 元素在內(nèi)存中的出現(xiàn)順序,。
例子
import numpy as np
a = np.arange(8).reshape(2,4)
print '原數(shù)組:'
print a
print '\n'
# default is column-major
print '展開的數(shù)組:'
print a.flatten()
print '\n'
print '以 F 風(fēng)格順序展開的數(shù)組:'
print a.flatten(order = 'F')
輸出如下:
原數(shù)組:
[[0 1 2 3]
[4 5 6 7]]
展開的數(shù)組:
[0 1 2 3 4 5 6 7]
以 F 風(fēng)格順序展開的數(shù)組:
[0 4 1 5 2 6 3 7]
numpy.ravel
這個函數(shù)返回展開的一維數(shù)組,并且按需生成副本,。返回的數(shù)組和輸入數(shù)組擁有相同數(shù)據(jù)類型,。這個函數(shù)接受兩個參數(shù)。
numpy.ravel(a, order)
構(gòu)造器接受下列參數(shù):
order
:'C'
-- 按行,,'F'
-- 按列,,'A'
-- 原順序,'k'
-- 元素在內(nèi)存中的出現(xiàn)順序,。
例子
import numpy as np
a = np.arange(8).reshape(2,4)
print '原數(shù)組:'
print a
print '\n'
print '調(diào)用 ravel 函數(shù)之后:'
print a.ravel()
print '\n'
print '以 F 風(fēng)格順序調(diào)用 ravel 函數(shù)之后:'
print a.ravel(order = 'F')
輸出如下:
原數(shù)組:
[[0 1 2 3]
[4 5 6 7]]
調(diào)用 ravel 函數(shù)之后:
[0 1 2 3 4 5 6 7]
以 F 風(fēng)格順序調(diào)用 ravel 函數(shù)之后:
[0 4 1 5 2 6 3 7]
序號 | 操作及描述 |
---|---|
1. | transpose 翻轉(zhuǎn)數(shù)組的維度 |
2. | ndarray.T 和self.transpose() 相同 |
3. | rollaxis 向后滾動指定的軸 |
4. | swapaxes 互換數(shù)組的兩個軸 |
修改維度
序號 | 維度和描述 |
---|---|
1. | broadcast 產(chǎn)生模仿廣播的對象 |
2. | broadcast_to 將數(shù)組廣播到新形狀 |
3. | expand_dims 擴展數(shù)組的形狀 |
4. | squeeze 從數(shù)組的形狀中刪除單維條目 |
數(shù)組的連接
序號 | 數(shù)組及描述 |
---|---|
1. | concatenate 沿著現(xiàn)存的軸連接數(shù)據(jù)序列 |
2. | stack 沿著新軸連接數(shù)組序列 |
3. | hstack 水平堆疊序列中的數(shù)組(列方向) |
4. | vstack 豎直堆疊序列中的數(shù)組(行方向) |
序號 | 數(shù)組及操作 |
---|---|
1. | split 將一個數(shù)組分割為多個子數(shù)組 |
2. | hsplit 將一個數(shù)組水平分割為多個子數(shù)組(按列) |
3. | vsplit 將一個數(shù)組豎直分割為多個子數(shù)組(按行) |
序號 | 元素及描述 |
---|---|
1. | resize 返回指定形狀的新數(shù)組 |
2. | append 將值添加到數(shù)組末尾 |
3. | insert 沿指定軸將值插入到指定下標之前 |
4. | delete 返回刪掉某個軸的子數(shù)組的新數(shù)組 |
5. | unique 尋找數(shù)組內(nèi)的唯一元素 |
下面是 NumPy 包中可用的位操作函數(shù),。
序號 | 操作及描述 |
---|---|
1. | bitwise_and 對數(shù)組元素執(zhí)行位與操作 |
2. | bitwise_or 對數(shù)組元素執(zhí)行位或操作 |
3. | invert 計算位非 |
4. | left_shift 向左移動二進制表示的位 |
5. | right_shift 向右移動二進制表示的位 |
import numpy as np
print '13 和 17 的二進制形式:'
a,b = 13,17
print bin(a), bin(b)
print '\n'
print '13 和 17 的位與:'
print np.bitwise_and(13, 17)
輸出如下:
13 和 17 的二進制形式:
0b1101 0b10001
13 和 17 的位與:
1
你可以使用下表驗證此輸出??紤]下面的位與真值表,。
A | B | AND |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
| | | 1 | 1 | 0 | 1 |
| --- | --- |
| AND |
| | 1 | 0 | 0 | 0 | 1 |
| result | 0 | 0 | 0 | 0 | 1 |
以下函數(shù)用于對dtype
為numpy.string_
或numpy.unicode_
的數(shù)組執(zhí)行向量化字符串操作。它們基于 Python 內(nèi)置庫中的標準字符串函數(shù),。
序號 | 函數(shù)及描述 |
---|---|
1. | add() 返回兩個str 或Unicode 數(shù)組的逐個字符串連接 |
2. | multiply() 返回按元素多重連接后的字符串 |
3. | center() 返回給定字符串的副本,,其中元素位于特定字符串的中央 |
4. | capitalize() 返回給定字符串的副本,其中只有第一個字符串大寫 |
5. | title() 返回字符串或 Unicode 的按元素標題轉(zhuǎn)換版本 |
6. | lower() 返回一個數(shù)組,,其元素轉(zhuǎn)換為小寫 |
7. | upper() 返回一個數(shù)組,,其元素轉(zhuǎn)換為大寫 |
8. | split() 返回字符串中的單詞列表,并使用分隔符來分割 |
9. | splitlines() 返回元素中的行列表,,以換行符分割 |
10. | strip() 返回數(shù)組副本,,其中元素移除了開頭或者結(jié)尾處的特定字符 |
11. | join() 返回一個字符串,它是序列中字符串的連接 |
12. | replace() 返回字符串的副本,,其中所有子字符串的出現(xiàn)位置都被新字符串取代 |
13. | decode() 按元素調(diào)用str.decode |
14. | encode() 按元素調(diào)用str.encode |
這些函數(shù)在字符數(shù)組類(numpy.char
)中定義,。較舊的 Numarray 包包含chararray
類,。numpy.char
類中的上述函數(shù)在執(zhí)行向量化字符串操作時非常有用。
import numpy as np
print '連接兩個字符串:'
print np.char.add(['hello'],[' xyz'])
print '\n'
print '連接示例:'
print np.char.add(['hello', 'hi'],[' abc', ' xyz'])
輸出如下:
連接兩個字符串:
['hello xyz']
連接示例:
['hello abc' 'hi xyz']
很容易理解的是,,NumPy 包含大量的各種數(shù)學(xué)運算功能,。NumPy 提供標準的三角函數(shù),算術(shù)運算的函數(shù),,復(fù)數(shù)處理函數(shù)等,。
NumPy 擁有標準的三角函數(shù),它為弧度制單位的給定角度返回三角函數(shù)比值,。
numpy.around()
這個函數(shù)返回四舍五入到所需精度的值,。該函數(shù)接受以下參數(shù)。
numpy.around(a,decimals)
其中:
序號 | 參數(shù)及描述 |
---|---|
1. | a 輸入數(shù)組 |
2. | decimals 要舍入的小數(shù)位數(shù),。默認值為0,。如果為負,整數(shù)將四舍五入到小數(shù)點左側(cè)的位置 |
用于執(zhí)行算術(shù)運算(如add()
,,subtract()
,,multiply()
和divide()
)的輸入數(shù)組必須具有相同的形狀或符合數(shù)組廣播規(guī)則。
import numpy as np
a = np.arange(9, dtype = np.float_).reshape(3,3)
print '第一個數(shù)組:'
print a
print '\n'
print '第二個數(shù)組:'
b = np.array([10,10,10])
print b
print '\n'
print '兩個數(shù)組相加:'
print np.add(a,b)
print '\n'
print '兩個數(shù)組相減:'
print np.subtract(a,b)
print '\n'
print '兩個數(shù)組相乘:'
print np.multiply(a,b)
print '\n'
print '兩個數(shù)組相除:'
print np.divide(a,b)
輸出如下:
第一個數(shù)組:
[[ 0. 1. 2.]
[ 3. 4. 5.]
[ 6. 7. 8.]]
第二個數(shù)組:
[10 10 10]
兩個數(shù)組相加:
[[ 10. 11. 12.]
[ 13. 14. 15.]
[ 16. 17. 18.]]
兩個數(shù)組相減:
[[-10. -9. -8.]
[ -7. -6. -5.]
[ -4. -3. -2.]]
兩個數(shù)組相乘:
[[ 0. 10. 20.]
[ 30. 40. 50.]
[ 60. 70. 80.]]
兩個數(shù)組相除:
[[ 0. 0.1 0.2]
[ 0.3 0.4 0.5]
[ 0.6 0.7 0.8]]
NumPy 有很多有用的統(tǒng)計函數(shù),,用于從數(shù)組中給定的元素中查找最小,最大,,百分標準差和方差等,。函數(shù)說明如下:
numpy.amin()
和 numpy.amax()
這些函數(shù)從給定數(shù)組中的元素沿指定軸返回最小值和最大值。
numpy.ptp()
numpy.ptp()
函數(shù)返回沿軸的值的范圍(最大值 - 最小值),。
numpy.percentile()
百分位數(shù)是統(tǒng)計中使用的度量,,表示小于這個值得觀察值占某個百分比。函數(shù)numpy.percentile()
接受以下參數(shù),。
numpy.percentile(a, q, axis)
其中:
序號 | 參數(shù)及描述 |
---|---|
1. | a 輸入數(shù)組 |
2. | q 要計算的百分位數(shù),,在 0 ~ 100 之間 |
3. | axis 沿著它計算百分位數(shù)的軸 |
numpy.median()
中值定義為將數(shù)據(jù)樣本的上半部分與下半部分分開的值。 numpy.median()
函數(shù)的用法如下面的程序所示,。
numpy.mean()
算術(shù)平均值是沿軸的元素的總和除以元素的數(shù)量,。 numpy.mean()
函數(shù)返回數(shù)組中元素的算術(shù)平均值。如果提供了軸,,則沿其計算,。
numpy.average()
加權(quán)平均值是由每個分量乘以反映其重要性的因子得到的平均值。 numpy.average()
函數(shù)根據(jù)在另一個數(shù)組中給出的各自的權(quán)重計算數(shù)組中元素的加權(quán)平均值,。該函數(shù)可以接受一個軸參數(shù),。如果沒有指定軸,則數(shù)組會被展開,。
考慮數(shù)組[1,2,3,4]
和相應(yīng)的權(quán)重[4,3,2,1]
,,通過將相應(yīng)元素的乘積相加,并將和除以權(quán)重的和,來計算加權(quán)平均值,。
加權(quán)平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)
標準差是與均值的偏差的平方的平均值的平方根,。標準差公式如下:
std = sqrt(mean((x - x.mean())**2))
如果數(shù)組是[1,2,,3,,4]
,則其平均值為2.5
,。因此,,差的平方是[2.25,0.25,0.25,2.25]
,并且其平均值的平方根除以4,,即sqrt(5/4)
是1.1180339887498949
,。
方差是偏差的平方的平均值,即mean((x - x.mean())** 2)
,。換句話說,,標準差是方差的平方根。
NumPy中提供了各種排序相關(guān)功能,。這些排序函數(shù)實現(xiàn)不同的排序算法,每個排序算法的特征在于執(zhí)行速度,,最壞情況性能,,所需的工作空間和算法的穩(wěn)定性。下表顯示了三種排序算法的比較,。
種類 | 速度 | 最壞情況 | 工作空間 | 穩(wěn)定性 |
---|---|---|---|---|
'quicksort' (快速排序) | 1 | O(n^2) | 0 | 否 |
'mergesort' (歸并排序) | 2 | O(n*log(n)) | ~n/2 | 是 |
'heapsort' (堆排序) | 3 | O(n*log(n)) | 0 | 否 |
import numpy as np
a = np.array([[3,7],[9,1]])
print '我們的數(shù)組是:'
print a
print '\n'
print '調(diào)用 sort() 函數(shù):'
print np.sort(a)
print '\n'
print '沿軸 0 排序:'
print np.sort(a, axis = 0)
print '\n'
# 在 sort 函數(shù)中排序字段
dt = np.dtype([('name', 'S10'),('age', int)])
a = np.array([('raju',21),('anil',25),('ravi', 17), ('amar',27)], dtype = dt)
print '我們的數(shù)組是:'
print a
print '\n'
print '按 name 排序:'
print np.sort(a, order = 'name')
輸出如下:
我們的數(shù)組是:
[[3 7]
[9 1]]
調(diào)用 sort() 函數(shù):
[[3 7]
[1 9]]
沿軸 0 排序:
[[3 1]
[9 7]]
我們的數(shù)組是:
[('raju', 21) ('anil', 25) ('ravi', 17) ('amar', 27)]
按 name 排序:
[('amar', 27) ('anil', 25) ('raju', 21) ('ravi', 17)]
NumPy 包包含numpy.linalg
模塊,,提供線性代數(shù)所需的所有功能。此模塊中的一些重要功能如下表所述,。
序號 | 函數(shù)及描述 |
---|---|
1. | dot 兩個數(shù)組的點積 |
2. | vdot 兩個向量的點積 |
3. | inner 兩個數(shù)組的內(nèi)積 |
4. | matmul 兩個數(shù)組的矩陣積 |
5. | determinant 數(shù)組的行列式 |
6. | solve 求解線性矩陣方程 |
7. | inv 尋找矩陣的乘法逆矩陣 |
import numpy.matlib
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[11,12],[13,14]])
np.dot(a,b)
[[37 40]
[85 92]]
Matplotlib 是 Python 的繪圖庫,。它可與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案,。它也可以和圖形工具包一起使用,,如 PyQt 和 wxPython。
Matplotlib 模塊最初是由 John D. Hunter 編寫的,。自 2012 年以來,,Michael Droettboom 是主要開發(fā)者。目前,,Matplotlib 1.5.1 是可用的穩(wěn)定版本,。該軟件包可以二進制分發(fā),其源代碼形式在 www.matplotlib.org 上提供,。
通常,,通過添加以下語句將包導(dǎo)入到 Python 腳本中:
from matplotlib import pyplot as plt
這里pyplot()
是 matplotlib 庫中最重要的函數(shù),,用于繪制 2D 數(shù)據(jù)。以下腳本繪制方程y = 2x + 5
:
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title('Matplotlib demo')
plt.xlabel('x axis caption')
plt.ylabel('y axis caption')
plt.plot(x,y)
plt.show()
ndarray
對象x
由np.arange()
函數(shù)創(chuàng)建為x
軸上的值,。y
軸上的對應(yīng)值存儲在另一個數(shù)組對象y
中,。這些值使用matplotlib
軟件包的pyplot
子模塊的plot()
函數(shù)繪制。
圖形由show()
函數(shù)展示,。
上面的代碼應(yīng)該產(chǎn)生以下輸出:
作為線性圖的替代,,可以通過向plot()
函數(shù)添加格式字符串來顯示離散值??梢允褂靡韵赂袷交址?。
字符 | 描述 | |
---|---|---|
'-' | 實線樣式 | |
'--' | 短橫線樣式 | |
'-.' | 點劃線樣式 | |
':' | 虛線樣式 | |
'.' | 點標記 | |
',' | 像素標記 | |
'o' | 圓標記 | |
'v' | 倒三角標記 | |
'^' | 正三角標記 | |
'<' | 左三角標記 | |
'>' | 右三角標記 | |
'1' | 下箭頭標記 | |
'2' | 上箭頭標記 | |
'3' | 左箭頭標記 | |
'4' | 右箭頭標記 | |
's' | 正方形標記 | |
'p' | 五邊形標記 | |
'*' | 星形標記 | |
'h' | 六邊形標記 1 | |
'H' | 六邊形標記 2 | |
'+' | 加號標記 | |
'x' | X 標記 | |
'D' | 菱形標記 | |
'd' | 窄菱形標記 | |
`' | '` | 豎直線標記 |
'_' | 水平線標記 |
還定義了以下顏色縮寫。
字符 | 顏色 |
---|---|
'b' | 藍色 |
'g' | 綠色 |
'r' | 紅色 |
'c' | 青色 |
'm' | 品紅色 |
'y' | 黃色 |
'k' | 黑色 |
'w' | 白色 |
要顯示圓來代表點,,而不是上面示例中的線,,請使用ob
作為plot()
函數(shù)中的格式字符串。
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title('Matplotlib demo')
plt.xlabel('x axis caption')
plt.ylabel('y axis caption')
plt.plot(x,y,'ob')
plt.show()
上面的代碼應(yīng)該產(chǎn)生以下輸出:
以下腳本使用 matplotlib 生成正弦波圖,。
import numpy as np
import matplotlib.pyplot as plt
# 計算正弦曲線上點的 x 和 y 坐標
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.title('sine wave form')
# 使用 matplotlib 來繪制點
plt.plot(x, y)
plt.show()
subplot()
subplot()
函數(shù)允許你在同一圖中繪制不同的東西,。在下面的腳本中,繪制正弦和余弦值,。
import numpy as np
import matplotlib.pyplot as plt
# 計算正弦和余弦曲線上的點的 x 和 y 坐標
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 建立 subplot 網(wǎng)格,,高為 2,寬為 1
# 激活第一個 subplot
plt.subplot(2, 1, 1)
# 繪制第一個圖像
plt.plot(x, y_sin)
plt.title('Sine')
# 將第二個 subplot 激活,,并繪制第二個圖像
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 展示圖像
plt.show()
上面的代碼應(yīng)該產(chǎn)生以下輸出:
bar()
pyplot
子模塊提供bar()
函數(shù)來生成條形圖,。以下示例生成兩組x
和y
數(shù)組的條形圖。
from matplotlib import pyplot as plt
x = [5,8,10]
y = [12,16,6]
x2 = [6,9,11]
y2 = [6,15,7]
plt.bar(x, y, align = 'center')
plt.bar(x2, y2, color = 'g', align = 'center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()
NumPy 有一個numpy.histogram()
函數(shù),,它是數(shù)據(jù)的頻率分布的圖形表示,。水平尺寸相等的矩形對應(yīng)于類間隔,,稱為bin
,,變量height
對應(yīng)于頻率。
numpy.histogram()
numpy.histogram()
函數(shù)將輸入數(shù)組和bin
作為兩個參數(shù),。 bin
數(shù)組中的連續(xù)元素用作每個bin
的邊界,。
import numpy as np
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) ]
np.histogram(a,bins = [0,20,40,60,80,100])
hist,bins = np.histogram(a,bins = [0,20,40,60,80,100])
print hist
print bins
輸出如下:
[3 4 5 2 1]
[0 20 40 60 80 100]
plt()
Matplotlib 可以將直方圖的數(shù)字表示轉(zhuǎn)換為圖形。 pyplot
子模塊的plt()
函數(shù)將包含數(shù)據(jù)和bin
數(shù)組的數(shù)組作為參數(shù),,并轉(zhuǎn)換為直方圖,。
from matplotlib import pyplot as plt
import numpy as np
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
plt.hist(a, bins = [0,20,40,60,80,100])
plt.title('histogram')
plt.show()
輸出如下:
|