【實驗樓/NumPy】numpy基本概念+基本操作

Numpy支持的數據類型

Numpy只支持數值類型的變量
bool, int類,uint類,float類,complex類
這些都是我們的數據類型dtype
我們要利用這些東西構造我們的數組類型ndarray

創建有規律數組的方法

  1. arange方法創建,用法同range。
  2. linspace方法創建,arange是規定步長,在linspace中是規定區間中數據的數目。
  3. ones——指定數組的形狀(只能用tuple),創建全爲1的數組。
  4. zeros——指定數組的形狀(只能用tuple),創建全爲0的數組。
  5. eye——創建一個單位矩陣。

數組的各種屬性

我只能說,numpy中ndarray的屬性實在是太多了,包括實驗樓裏提到的我都不想把他們完全列舉出來。
這裏我們先假設a是一個由array創建的ndarray類型的數組

  1. .T屬性,獲得該矩陣的轉置形態。
  2. .size屬性,獲得數組中所有元素的個數統計。
  3. .ndim屬性,獲得該數組的維度。
  4. .shape屬性,輸出該數組各個維度的大小。
    在這裏插入圖片描述

數組的各種操作

爲了能夠更加方便地操作各種各樣的參數,我們需要把我們的參數存儲到一個矩陣中,同時,爲了使用一些優化算法,我們又不得不展開我們的數組。numpy中這些操作都是比較簡單的。
1. .reshape((shape_tuple))
2. .ravel()

其它還有一些很厲害的操作, 在這之前我們需要明白一些事實。

· 什麼是ndarray的的axis?

axis是多維數組的一個屬性,以二維數組爲例,axis=0代表沿着列的方向向下,axis=1代表沿着行的方向向右

在瞭解了以上知識以後,我們就可以瞭解一下操作了:
首先是數組和數組之間的操作:

  1. 數組連接,把多個數組拼接成一個數組——concatenate
  2. 數組的堆疊,允許更加靈活地堆疊數組——stack系列
  3. 數組的拆分,相當於是堆疊的逆操作——split系列

然後是數組中列和行的操作:

  1. 刪除列或者行——delete,給定axis的值決定刪除列還是行
  2. 插入列或者行——insert,同樣由axis來決定
  3. 在末尾添加數組——append。和insert操作差不多

其它

隨機數操作

主要是使用numpy.random模塊內的各種函數。
你要知道numpy中操作的單元都是數組,所以最後生成的都是ndarray的對象,所以你給定的參數不一定是隨機數的區間,很可能是最後數組的shape!
這裏面有很多隨機數可以挑選,請移步相關文檔,這裏不再贅述。

數學函數

numpy支持比built-in math庫更加複雜的數學運算(這裏就不僅僅侷限於數組了)甚至可以求解積分和差分。
這裏我主要想講講與矩陣和向量有關的運算
還有與線性代數有關的運算,這裏使用到的是numpy.linalg模塊中的內容。
在這裏插入圖片描述

索引和切片

索引操作,以二維數組爲例:

  1. 獲得某個索引的元素,比如要獲得(m, n)位置上的元素,就a[m, n]。
  2. 獲得某些元素,我們可以a[([m1, n1], [m2, n2])]。
    切片操作,和list的切片操作時一樣的。
    ndarray[start : stop : step]
    我們在對高維數組進行操作的時候,切片也可以以索引的形式來進行。
    比如a[0:3, 2:4]什麼意思一目瞭然

排序,搜索,計數

  1. 排序:sort方法
  2. 搜索和計數:
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章