ufunc物件是numpy的兩大基本物件之一,另乙個是array。ufunc是universal function object的縮寫。在python裡面,一切皆為物件,包括我們的函式,而numpy裡面的函式是ufunc物件的例項,如下所示:
type(np.add)#返回的是 即ufunc物件
既然是add,本身也是乙個ufunc類的物件,那我自然也可以通過 「 物件.方法或屬性 」去加以訪問了。那到底ufunc類中定義了哪些方法或者是的屬性呢,可以通過下面的方式加以檢視;
dir(np.ufunc)
返回的列表為:
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'accumulate', 'at', 'identity', 'nargs', 'nin', 'nout', 'ntypes', 'outer', 'reduce', 'reduceat', 'signature', 'types']
特別的,對於二元操作符所對應的ufunc物件,如上面的add,可以使用下面的一些方法(注意:雖然numpy函式是ufunc的物件,但不是每乙個函式都是,也不是每乙個函式都可以使用上面的ufunc物件羅列出來的所有的屬性和方法)
1、reduce方法——np.add.reduce()
reduce(),沿著指定軸對陣列進行操作,相當於將相應的操作放到該軸元素之間。其實就是求某乙個維度上的和
a1=np.add.reduce([1,2,3]) #1+2+3=6
a2=np.add.reduce([[1,2,3],[4,5,6]]) #[1+4,2+5,3+6]=[5,7,9]
a3=np.add.reduce([[1,2,3],[4,5,6]],axis=1) #[1+2+3,4+5+6]=[6,15]
a4=np.add.reduce([[1,2,3],[4,5,6]],axis=0) #[14,2+5,3+6]=[5,7,9]
預設為axis=0
2、accumulate()和reduce()類似,區別時是前者會保留中間結果:
b1=np.add.accumulate([1,2,3]) #[1,1+2,1+2+3]=[1,3,6]
print(b1)
b2=np.add.accumulate([[1,2,3],[4,5,6],[7,8,9]],axis=0) #
print(b2)
b3=np.add.accumulate([[1,2,3],[4,5,6],[7,8,9]],axis=1)
print(b3)
b2的結果為
[[1,2,3],
[1+4,2+5,3+6],
[1+4+7,2+5+8,3+6+9]]
所以最終的結果為:
[[ 1 2 3]
[ 5 7 9]
[12 15 18]]
b3的結果為:
[[ 1 ,1+2,1+2+3]
[ 4 ,4+5,4+5+6]
[7,7+8,7+8+9]]
所以最終的結果為:
[[ 1 3 6]
[ 4 9 15]
[ 7 15 24]]
3、reduceat()方法計算多紐reduce()的結果,通 過 indices引數指定一系列的起始和終止位置。它的計算有些特別,,計算的方法如下:
1、三角函式
sin(x)
cos(x)
tan(x)
sinh(x)
conh(x)
tanh(x)
arccos(x)
arctan(x)
arcsin(x)
arccosh(x)
arctanh(x)
arcsinh(x)
arctan2(x,y)
arctan2(x,y)
返回arctan(x/y)
。
2、向量操作
dot(x,y)
inner(x,y)
cross(x,y)
vdot(x,y)
outer(x,y)
kron(x,y)
tensordot(x,y[,axis])
3、其他常見初等函式
exp(x)
log(x)
log10(x)
sqrt(x)
absolute(x)
conjugate(x)
negative(x)
ceil(x)
floor(x)
fabs(x)
hypot(x)
fmod(x)
maximum(x,y)
minimum(x,y)
hypot
返回對應點(x,y)
到原點的距離。
4、型別處理及判斷
iscomplexobj
iscomplex
isrealobj
isreal
imag
real
real_if_close
isscalar
isneginf
isposinf
isinf
isfinite
isnan
nan_to_num
common_type
typename
5、陣列修改形狀及變更
atleast_1d
atleast_2d
atleast_3d
expand_dims
hstack
vstack
dstack
column_stack
hsplit
vsplit
dsplit
split
squeeze
6、其他有用函式
fix
modamax
amin
ptpsum
cumsum
prod
cumprod
diff
angle
unwrap
sort_complex
trim_zeros
fliplr
flipud
rot90
diag
eyeselect
extract
insert
roots
poly
anyall
disp
unique
nansum
nanmax
nanargmax
nanargmin
nanmin
nan
開頭的函式會進行相應的操作,但是忽略nan
值。
7、常見的加減乘除四則運算運算
函式a + b
add(a,b)
a - b
subtract(a,b)
a * b
multiply(a,b)
a / b
divide(a,b)
a ** b
power(a,b)
a % b
remainder(a,b)
8、比較和邏輯運算運算
函式<
==
equal
!=
not_equal
>
greater
>=
greater_equal
<
less
<=
less_equal
logical_and
logical_or
logical_xor
logical_not
&
bitwise_and
bitwise_or
^
bitwise_xor
~
invert
>>
right_shift
<<
left_shift
1 Numpy的通用函式 ufunc
元素級函式 一元函式 對陣列中的每個元素進行運算 陣列級函式 統計函式,像聚合函式 例如 求和 求平均 矩陣運算 隨機生成函式 常用一元通用函式 陣列級函式 函式名作用 例子結果 np.abs sum mean std var 計算絕對值 求和 求平均值 求標準差 方差 arr np.array 1...
numpy中的ufunc用法詳解
nin 輸入的個數 nout 輸出的個數 nargs the number of arguments.data attribute containing the number of arguments the ufunc takes,including optional ones.ntypes th...
科學計算庫(三)numpy之ufunc
abs fabs 取絕對值。fabs 更快的速度,但不能計算複數a bj的絕對值 sqrt 平方根 square 平方 exp x 計算自然常數e的x次方 log e為底 log10 log2 log1p 以e為底,1 arr為真數,求對數 如果是其他底數的log函式可以通過換底公式轉換。log換底...