Numpy支持的數據類型
Numpy只支持數值類型的變量
如bool, int類,uint類,float類,complex類。
這些都是我們的數據類型dtype
我們要利用這些東西構造我們的數組類型ndarray
創建有規律數組的方法
- arange方法創建,用法同range。
- linspace方法創建,arange是規定步長,在linspace中是規定區間中數據的數目。
- ones——指定數組的形狀(只能用tuple),創建全爲1的數組。
- zeros——指定數組的形狀(只能用tuple),創建全爲0的數組。
- eye——創建一個單位矩陣。
數組的各種屬性
我只能說,numpy中ndarray的屬性實在是太多了,包括實驗樓裏提到的我都不想把他們完全列舉出來。
這裏我們先假設a是一個由array創建的ndarray類型的數組
- .T屬性,獲得該矩陣的轉置形態。
- .size屬性,獲得數組中所有元素的個數統計。
- .ndim屬性,獲得該數組的維度。
- .shape屬性,輸出該數組各個維度的大小。
數組的各種操作
爲了能夠更加方便地操作各種各樣的參數,我們需要把我們的參數存儲到一個矩陣中,同時,爲了使用一些優化算法,我們又不得不展開我們的數組。numpy中這些操作都是比較簡單的。
1. .reshape((shape_tuple))
2. .ravel()
其它還有一些很厲害的操作, 在這之前我們需要明白一些事實。
· 什麼是ndarray的的axis?
axis是多維數組的一個屬性,以二維數組爲例,axis=0代表沿着列的方向向下,axis=1代表沿着行的方向向右。
在瞭解了以上知識以後,我們就可以瞭解一下操作了:
首先是數組和數組之間的操作:
- 數組連接,把多個數組拼接成一個數組——concatenate
- 數組的堆疊,允許更加靈活地堆疊數組——stack系列
- 數組的拆分,相當於是堆疊的逆操作——split系列
然後是數組中列和行的操作:
- 刪除列或者行——delete,給定axis的值決定刪除列還是行
- 插入列或者行——insert,同樣由axis來決定
- 在末尾添加數組——append。和insert操作差不多
其它
隨機數操作
主要是使用numpy.random模塊內的各種函數。
你要知道numpy中操作的單元都是數組,所以最後生成的都是ndarray的對象,所以你給定的參數不一定是隨機數的區間,很可能是最後數組的shape!
這裏面有很多隨機數可以挑選,請移步相關文檔,這裏不再贅述。
數學函數
numpy支持比built-in math庫更加複雜的數學運算(這裏就不僅僅侷限於數組了)甚至可以求解積分和差分。
這裏我主要想講講與矩陣和向量有關的運算
還有與線性代數有關的運算,這裏使用到的是numpy.linalg模塊中的內容。
索引和切片
索引操作,以二維數組爲例:
- 獲得某個索引的元素,比如要獲得(m, n)位置上的元素,就a[m, n]。
- 獲得某些元素,我們可以a[([m1, n1], [m2, n2])]。
切片操作,和list的切片操作時一樣的。
ndarray[start : stop : step]
我們在對高維數組進行操作的時候,切片也可以以索引的形式來進行。
比如a[0:3, 2:4]什麼意思一目瞭然
排序,搜索,計數
- 排序:sort方法
- 搜索和計數: