Python原生提供多種數(shù)據(jù)類型的支持,包括列表、元組、字典、集合等。不過對于數(shù)據(jù)統(tǒng)計、數(shù)據(jù)挖掘、機器學習來說,這些支持不夠用,而NumPy則是數(shù)學運算庫的不二之選。
一、安裝或升級
沒有pip的請先安裝Python包管理工具。
安裝NumPy:
$ pip install numpy
升級NumPy:
$ pip install --upgrade numpy
二、導入NumPy
請自行在文件頭導入NumPy庫。如沒有特殊情況,后文將省略這段代碼。
導入numpy所有模塊,請注意不要和其他庫沖突
from numpy import *
三、功能使用
3.1 mat() 數(shù)組轉(zhuǎn)矩陣
使用random函數(shù)隨機生成 4x4 的數(shù)組,然后mat()把數(shù)組轉(zhuǎn)換為矩陣。為了方便學習,接下來的幾個例子都用這里生成的變量randMat。
>>> randMat = mat(random.rand(4,4))
>>> print randMat
[[ 0.63795383 0.16175714 0.47359276 0.97462684]
[ 0.45715522 0.77251449 0.66504488 0.07133683]
[ 0.61471841 0.23323568 0.95002458 0.38985276]
[ 0.26085195 0.42547952 0.84814459 0.35398749]]
3.2 shape() 查看維度
使用上個例子的randMat變量,查看這個數(shù)組的維度。
>>> print shape(randMat)
(4, 4)
矩陣行
>>> print shape(randMat)[0]
4
矩陣的列
>>> print shape(randMat)[1]
4
3.3 size 元素個數(shù)
總共16個元素
>>> print randMat.size
16
3.4 逆矩陣
注意變量后面的參數(shù)
>>> print randMat.I
[[ 0.29673207 1.05925085 1.8179092 -3.03254655]
[ 0.36225232 1.41847049 -1.66390977 0.54925607]
[-0.74644908 -0.81502459 0.82412699 1.31180452]
[ 1.13439787 -0.53272813 -1.31423984 1.25639622]]
3.5 tile() 函數(shù)
定義一個比較簡單的1x2矩陣
>>> a = [1, 2]
輸入矩陣和參數(shù)值2
>>> print tile(a, 2)
[1 2 1 2]
>>> print tile(a, 4)
[1 2 1 2 1 2 1 2]
把參數(shù)改為元組(1,2),就變成了1x4的矩陣
>>> print tile(a, (1,2))
[[1 2 1 2]]
參數(shù)改為(2, 2),變成2x4的矩陣,行和列都是原來的2倍
>>> print tile(a, (2,2))
[[1 2 1 2]
[1 2 1 2]]
把a在行上拓展
>>> print tile(a, (4,1))
[[1 2]
[1 2]
[1 2]
[1 2]]
3.6 sum() 總計
按列總計
>>> print sum([[0,1,2],[2,1,3]],axis=0)
[2 2 5]
按行總計
>>> print sum([[0,1,2],[2,1,3]],axis=1)
[3 6]
3.7 argsort()
返回按升序排列的下標值
>>> x = array([1, 2, 3])
>>> argsort(x)
array([0, 1, 2])
>>> x = array([3, 2, 1])
>>> argsort(x)
array([2, 1, 0])
>>> x = array([3, 1, 2])
>>> argsort(x)
array([1, 2, 0])
多維矩陣的排序,使用axis參數(shù)指定排序的條件
>>> x = array([[0, 3], [2, 2]])
>>> argsort(x, axis=0)
array([[0, 1],
[1, 0]])
>>> argsort(x, axis=1)
array([[0, 1],
[0, 1]])
按降序排列
>>> x = array([1,2,3])
>>> argsort(-x)
array([2, 1, 0])
3.8 創(chuàng)建0矩陣
1x4浮點型0矩陣:
>>> print zeros(4)
[0. 0. 0. 0.]
創(chuàng)建一個4x4的浮點型0矩陣:
>>> print zeros([4,4])
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
在zeros()里面,注意填寫的[4,4],分別是行和列。
整形的0矩陣:
>>> print zeros([4,4],int16)
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
3.9 全1矩陣
2x3的全1矩陣
>>> print ones([2,3])
[[ 1. 1. 1.]
[ 1. 1. 1.]]
生成兩個2x3全1矩陣
>>> print ones([2,2,3])
[[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]]
生成兩個整形2x3全1矩陣
>>> print ones([2,2,3],int16)
[[[1 1 1]
[1 1 1]]
[[1 1 1]
[1 1 1]]]