cumsum函式 NumPy ufunc通用函式

2021-10-17 08:23:57 字數 2261 閱讀 8144

numpy 提供了兩種基本的物件,即 ndarray 和 ufunc 物件。前面幾節已經介紹了 ndarray,本節將介紹 numpy。ufunc 是 universal function 的縮寫,意思是「通用函式」,它是一種能對陣列的每個元素進行操作的函式。許多 ufunc 函式都是用c語言級別實現的,因此它們的計算速度非常快。此外,ufun 比 math 模組中的函式更靈活。math 模組的輸入一般是標量,但 numpy 中的函式可以是向量或矩陣,而利用向量或矩陣可以避免使用迴圈語句,這點在機器學習、深度學習中非常重要。

表1:numpy 中的幾個常用通用函式

函式使用方法

sqrt()

計算序列化資料的平方根

sin()、cos()

三角函式

abs()

計算序列化資料的絕對值

dot()

矩陣運算

log()、logl()、log2()

對數函式

exp()

指數函式

cumsum()、cumproduct()

累計求和、求積

sum()

對乙個序列化資料進行求和

mean()

計算均值

median()

計算中位數

std()

計算標準差

var()

計算方差

corrcoef()

計算相關係數

math 與 numpy 函式的效能比較

請看下面的**:

import timeimport mathimport numpy as npx = [i * 0.001 for i in np.arange(1000000)]start = time.clock()for i, t in enumerate(x):x[i] = math.sin(t)print ("math.sin:", time.clock() - start )x = [i * 0.001 for i in np.arange(1000000)]x = np.array(x)start = time.clock()np.sin(x)print ("numpy.sin:", time.clock() - start )
列印結果:

math.sin: 0.5169950000000005

numpy.sin: 0.05381199999999886

由此可見,numpy.sin 比 math.sin 快近 10 倍。

迴圈與向量運算比較

充分使用 python 的 numpy 庫中的內建函式(built-in function),來實現計算的向量化,可大大地提高執行速度。numpy 庫中的內建函式使用了 simd 指令。如下使用的向量化要比使用迴圈計算速度快得多。如果使用 gpu,其效能將更強大,不過 numpy 不支援 gpu。請看下面的**:

import timeimport numpy as npx1 = np.random.rand(1000000)x2 = np.random.rand(1000000)##使用迴圈計算向量點積tic = time.process_time()dot = 0for i in range(len(x1)):dot+= x1[i]*x2[i]toc = time.process_time()print ("dot = " + str(dot) + "\n for loop----- computation time = " + str(1000*(toc - tic)) + "ms")##使用numpy函式求點積tic = time.process_time()dot = 0dot = np.dot(x1,x2)toc = time.process_time()print ("dot = " + str(dot) + "\n verctor version---- computation time = " + str(1000*(toc - tic)) + "ms")
輸出結果:

dot = 250215.601995

for loop----- computation time = 798.3389819999998ms

dot = 250215.601995

verctor version---- computation time = 1.885051999999554ms

從執行結果上來看,使用 for 迴圈的執行時間大約是向量運算的 400 倍。因此,在深度學習演算法中,一般都使用向量化矩陣進行運算。

sum函式,cumsum函式 Matlab

1 sum函式 sum函式用於求矩陣列方向元素或向量的和,呼叫格式如下。1 b sum a 若a為向量,則返回所有元素的和 如a為矩陣,則分別對其各列所有元素求和並返回結果。2 b sum a,dim 分別對矩陣a中第dim維的所有元素求和。應用示例 a pascal 6 a 1 1 1 1 1 1...

numpy中的cumsum函式

cumsum 計算軸向元素累加和,返回由中間結果組成的陣列 重點就是返回值是 由中間結果組成的陣列 以下 在python3.6版本執行成功!下面看 定義乙個223的陣列,所以其shape是2,2,3,索引分別0,1,2 shape 索引 2 02 1 3 2 import numpy as np a...

matlab中cumsum函式和sum函式詳解

matlab中使用sum和cumsum兩個加和函式,區別聯絡 參考matlab中cumsum函式詳解 matlab中cumsum函式通常用於計算乙個陣列各行的累加值。在matlab的命令視窗中輸入doc cumsum或者help cumsum即可獲得該函式的幫助資訊。呼叫格式及說明 matlab中c...