天天看點

Numpy中的通用函數和聚合

https://www.toutiao.com/a6675559636919124483/

Numpy中的通用函數和聚合
  1. 概述

在Numpy中存在着通用函數和聚合去對資料進行處理,numpy通過向量進行對資料數組的計算,而這些向量主要依靠一些通用函數,而聚合是numpy對面對大量資料時擷取描述性統計資訊的方法。

  1. numpy的通用函數

1、為什麼用numpy的通用函數而不用Python的循環做逐個元素的計算

NumPy 提供了一個簡單靈活的接口來優化資料數組的計算,使得numpy成為python資料科學中極其重要的一部分。Numpy主要是通過向量進行操作的,而這些操作主要依靠他的一些通用函數實作,接下來,我們就去學習這些通用函數,以友善我們提高元素重複計算的效率。

學習numpy通用函數,我們首先舉個例子:

假設我們想要計算一個數組元素的倒數:

方法1:用循環疊代執行

方法2:用Numpy的通用函數進行計算

1.1用Python的循環語句實作

Numpy中的通用函數和聚合

1.2 用numpy的通用函數實作

Numpy中的通用函數和聚合

1.3對比一下兩者運作的時間

Numpy中的通用函數和聚合

這時候就會發現循環的時間複雜度很高,直接用數組通用函數進行計算,速度是python代碼循環進行計算的10倍左右。

2、常用通用函數

2.1數組的運算

NumPy 通用函數的使用方式非常自然,因為它用到了 Python 原生的算術運算符,标準的 加、減、乘、除都可以使用:

Numpy中的通用函數和聚合
  • 加法,直接用+号或者使用np.add()
Numpy中的通用函數和聚合
  • 除法,使用/号或者np.divide()
Numpy中的通用函數和聚合
  • 平方,使用**或者np.power()
Numpy中的通用函數和聚合
  • 乘法,使用*号或者np.multiply()
Numpy中的通用函數和聚合

剩餘的通用函數操作:

運算符

對應的通用函數

描述

+

Np.add

加法運算(即 1 + 1 = 2)

-

Np.subtract

減法運算(即 3 - 2 = 1)

-

Np.negative

負數運算(即 -2)

*

Np.multiply

乘法運算(即 2 * 3 = 6)

/

Np.divide

除法運算(即 3 / 2 = 1.5)

//

Np.floor_divide

地闆除法運算(floor division,即3//2 = 1)

**

Np.power

指數運算(即 2 ** 3 = 8)

%

Np.mod

模 / 餘數(即 9 % 4 = 1)

2.2絕對值

正如NumPy 能了解 Python 内置的運算操作, NumPy 也可以了解 Python 内置的絕對值 函數:

Numpy中的通用函數和聚合

Numpy的計算速度還是快一些的。

2.3三角函數

NumPy 提供了大量好用的通用函數,其中對于資料科學家最有用的就是三角函數。首先定義一個角度數組:

Numpy中的通用函數和聚合

然後進行三角函數運算

Numpy中的通用函數和聚合

當然反三角函數也是支援的

Numpy中的通用函數和聚合

2.4指數和對數

Numpy中也提供了對指數和對數進行運算的方法

  • 指數運算
Numpy中的通用函數和聚合
  • 以e為底的對數運算
Numpy中的通用函數和聚合
  • 以2為底的對數運算
Numpy中的通用函數和聚合
  • 以10為底的對數運算
Numpy中的通用函數和聚合
  1. 通用函數特性

1.指定輸出

在進行大量運算時,有時候指定一個用于存放運算結果的數組是非常有用的。不同于建立 臨時數組,你可以用這個特性将計算結果直接寫入到你期望的存儲位置。所有的通用函數 都可以通過out參數來指定計算結果的存放位置:

這個特性也可以被用作數組視圖,例如可以将計算結果寫入指定數組的每隔一個元素的位置:

Numpy中的通用函數和聚合

2.聚合

  • 對通用函數調用reduce方法會傳回數組中所有元素的和:
Numpy中的通用函數和聚合

對内積調用reduce也同樣會傳回數組的内積

  • 對通用函數調用accumulate,會傳回每次計算的結果
Numpy中的通用函數和聚合

3.外積

任何通用函數都可以用 outer 方法獲得兩個不同輸入數組所有元素對的函數運算結果。這意味着你可以用一行代碼實作一個乘法表:

Numpy中的通用函數和聚合

三、聚合:最大值、最小值和其他值

當我們面對大量的資料時,首先想到的就是去擷取他們的一些描述性統計資訊,比如中值、中位數、均值、最大值、最小值、和、乘積等。Numpy内置的一些方法,在求取這些資訊時,會非常的便利和高效。下面我們就去介紹一些比較常用的:

1.數組值求和

Numpy中的通用函數和聚合
Numpy中的通用函數和聚合

由于Numpy的sum函數是在編譯的過程中進行計算的,是以速度會比python的sum更快一些。

2、最大值和最小值

同樣,Python也有内置的min函數和max函數,分别被用于擷取給定數組的最小值和最大值:

Numpy中的通用函數和聚合

對于 min、 max、 sum 和其他 NumPy 聚合,一種更簡潔的文法形式是數組對象直接調用這些方法:

Numpy中的通用函數和聚合

3、多元度聚合

一種常用的聚合操作是沿着一行或者一列聚合。例如,有着一個二維數組,我們想要統計他的一些聚合資訊:

Numpy中的通用函數和聚合

預設情況下,每一個Numpy聚合函數都會傳回對整個數組的聚合結果:

Numpy中的通用函數和聚合

聚合函數還有一個參數,用于指定沿着哪個軸的方向進行聚合。例如,可以通過指定 axis=0 找到每一列的最小值:

Numpy中的通用函數和聚合

找到行的最大值類似的操作,讓axis = 1 就可以實作

Numpy中的通用函數和聚合

axis 關鍵字指定的是數組将會被折疊的次元,而不是将要傳回的次元。是以指定 axis=0 意味着第一個軸将要被折疊——對于二維數組,這意味着每一列的值都将被聚合。

4、其他聚合函數

Python中其他可用的聚合函數:

函數名稱

NaN安全版本

描述

np.sum

np.nansum

計算元素的和

np.prod

np.nanprod

計算元素的積

np.mean

np.nanmean

計算元素的平均值

np.std

np.nanstd

計算元素的标準差

np.var

np.nanvar

計算元素的方差

np.min

np.nanmin

找出最小值

np.max

np.nanmax

找出最大值

np.argmin

np.nanargmin

找出最小值的索引

np.argmax

np.nanargmax

找出最大值的索引

np.median

np.nanmedian

計算元素的中位數

np.percentile

np.nanpercentile

計算基于元素排序的統計值

np.any

N/A

驗證任何一個元素是否為真

np.all

N/A

驗證所有元素是否為真

繼續閱讀