numpy中的ufunc用法詳解

2021-10-02 15:21:38 字數 2659 閱讀 4421

nin: 輸入的個數

nout: 輸出的個數

nargs: the number of arguments. data attribute containing the number of arguments the ufunc takes, including optional ones.

ntypes: the number of numerical numpy types - of which there are 18 total - on which the ufunc can operate

types: returns a list with types grouped input->output. data attribute listing the data-type 「domain-range」 groupings the ufunc can deliver. the data-types are given using the character codes

identity: data attribute containing the identity element for the ufunc, if it has one. if it does not, the attribute value is none.

signature: the signature determines how the dimensions of each input/output array are split into core and loop dimensions

小技巧:呼叫ufunc.__doc__可以檢視該函式的文件

print

(np.multiply.__doc__)

以下我們以add.reduce函式為例來講解

用法: reduce(a,axis,initial,keepdims)

詳見 reduce

a是輸入的矩陣

axis是參與運算的維度(預設為0)

例如:

import numpy as np

a=np.arange(9)

.reshape(3,

3)print

(a)# [[0 1 2]

# [3 4 5]

# [6 7 8]]

#如果我們想把矩陣按行(axis=0)進行劃分,把各行相加

b=np.add.

reduce

(a,axis=0)

print

(b)# [ 9 12 15]

我們檢視b的shape,得到的結果是(3,),可見運算完成後,axis=0已經被除去(reduce)了,當然,如果我們希望運算前後ndim不變,也就是不把axis=0給reduce掉,可以用keepdims=1實現

b=np.add.

reduce

(a,axis=

0,keepdims=

1)

如果我們希望最後的解果獲得偏置,也就是使得結果的每個element都加乙個5,可以呼叫initial這個參量

b=np.add.

reduce

(a,axis=

0,keepdims=

1,initial=5)

print

(b)#[[14 17 20]]

類似地,multiply.reduce和add.reduce是十分類似的,唯一的區別是把「相加」變成相乘,對於其他函式的reduce,也是類似的。

同樣,我們以add.accumulate為例

如果我們還是把矩陣的行(axis=0)進行劃分,我們看看add.accumulate得到的結果是什麼

import numpy as np

a=np.arange(9)

.reshape(3,

3)print

(a)# [[0 1 2]

# [3 4 5]

# [6 7 8]]

#如果我們想吧矩陣按行(axis=0)進行劃分,把各行相加

b=np.add.accumulate(a,axis=0)

print

(b)# [[ 0 1 2]第一行

# [ 3 5 7]第一行+第二行

# [ 9 12 15]]第一行+第二行+第三行

我們以add.outer為例

import numpy as np

a=np.array([1

,2,3

])b=np.array([4

,5,6

])print

(np.add.outer(a,b)

)# [[5 6 7]

# [6 7 8]

# [7 8 9]]

我們發現,a中的1被替換成了1+[4,5,6],2被替換成了2+[4,5,6],3被替換成了3+[4,5,6]

總結:add.outer(a,b)就相當於把a中的每個element替換為這個element與b的和,結果的shape為(a.shape,b.shape)

numpy的函式物件ufunc詳解

ufunc物件是numpy的兩大基本物件之一,另乙個是array。ufunc是universal function object的縮寫。在python裡面,一切皆為物件,包括我們的函式,而numpy裡面的函式是ufunc物件的例項,如下所示 type np.add 返回的是 即ufunc物件 既然是...

1 Numpy的通用函式 ufunc

元素級函式 一元函式 對陣列中的每個元素進行運算 陣列級函式 統計函式,像聚合函式 例如 求和 求平均 矩陣運算 隨機生成函式 常用一元通用函式 陣列級函式 函式名作用 例子結果 np.abs sum mean std var 計算絕對值 求和 求平均值 求標準差 方差 arr np.array 1...

Python基礎之Numpy的基本用法詳解

a np.array 1,2,3,4,5,6,7,8,9,10,11 一維陣列 b np.array 1,2 3,4 二維陣列 numpy.arange start,stop,step,dtype start預設0,step預設1 c np.arange 0,10,1,dtype int np.ar...