NumPy入門系列(二)

NumPy入門系列(二)

NumPy入門系列(一)

快速的元素級數組函數

對ndarray中的數據執行元素級運算的函數,即函數作用於數組中的每一個元素:

NumPy入門系列(二)

上面的函數都是一元函數,即傳遞單個數組作為參數,以下是常見的一元函數:

NumPy入門系列(二)

下面是二元函數的用法(傳遞兩個數組),大部分二元函數都可以用簡單的數學運算符替代:

NumPy入門系列(二)

以下是常見的二元函數:

NumPy入門系列(二)

另外這些函數可以接受一個out可選參數,這樣就能在數組原地進行操作:

NumPy入門系列(二)

有些函數可能返回多個數組:

NumPy入門系列(二)

利用數組進行數據處理

NumPy數組使你可以將許多種數據處理任務表述為簡潔的數組表達式(否則需要編寫循環用數組表達式代替循環的做法,通常被稱為矢量化。一般來說,矢量化數組運算要比等價的純Python方式快上一兩個數量級(甚至更多),尤其是各種數值計算。

作為簡單的例子,假設我們想要在一組值(網格型)上計算函 數 sqrt(x^2+y^2),並返回灰度圖像:

NumPy入門系列(二)

條件邏輯與數組運算np.where

numpy.where函數是三元表達式x if condition else y的矢量化版本,其語法為:

<code>where(condition, [x, y])
Return elements chosen from `x` or `y` depending on `condition`.
condition :條件數組
x:滿足條件返回值(x中的元素),可以是數組,也可以是數據(可以廣播)
y:不滿足條件的返回值/<code>
NumPy入門系列(二)

再看一例應用:

NumPy入門系列(二)

數學和統計方法

可以通過數組上的一組數學函數對整個數組或某個軸向的數據進行統計計算,axis0列,axis1行:

NumPy入門系列(二)

NumPy入門系列(二)

用於布爾型數組的方法

NumPy入門系列(二)

應用,統計符合條件的元素個數:

NumPy入門系列(二)

排序

NumPy入門系列(二)

唯一化以及其它的集合邏輯

NumPy提供了一些針對一維ndarray的基本集合運算。最常用的可能要數np.unique 了,它用於找出數組中的唯一值並返回已排序的結果:

<code>np.unique(
    arr,
    return_index=False,
    return_inverse=False,
    return_counts=False,
    axis=None,
)/<code>
NumPy入門系列(二)

用於數組的文件輸入輸出

NumPy能夠讀寫磁盤上的文本數據或二進制數據。NumPy能夠讀寫磁盤上的文本數據或二進制數據。

np.savez可以將多個數組保存到一個未壓縮文件中,將數組以關鍵字參數的形 式傳入即可:

NumPy入門系列(二)

線性代數庫numpy.linalg

NumPy入門系列(二)

NumPy入門系列(二)

常用的linalg函數:

NumPy入門系列(二)

random模塊

NumPy入門系列(二)

常用的random函數:

NumPy入門系列(二)

NumPy入門系列(二)

NumPy應用實例---隨機漫步

我們通過模擬隨機漫步來說明如何運用數組運算。先來看一個簡單的隨機漫步的例 子:從0開始,步長1和-1出現的概率相等。先來看純Python實現:

NumPy入門系列(二)

numpy可以很簡單的完成這項工作並做一些統計工作:

NumPy入門系列(二)

NumPy入門系列(二)


分享到:


相關文章: