NumPy學習手記

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]]]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容