Python 中用於 N 維陣列的通用函式是什麼?


在本文中,我們將解釋 Python 中的通用函式以及它們如何應用於 N 維陣列。

通用函式(或ufunc)是在 ndarray 上逐元素操作的函式,提供陣列廣播、型別轉換以及各種其他標準功能。換句話說,ufunc 是圍繞接受固定數量標量輸入並返回固定數量標量輸出的函式的“向量化”包裝器。

它們是 NumPy 庫中的簡單數學函式。NumPy 包含許多通用函式,支援各種操作。

這些函式包含標準三角函式、算術運算、複數處理、統計函式等等。以下是通用函式的一些特徵:

  • 這些函式適用於 ndarray(N 維陣列),它是 NumPy 的陣列類。

  • 它提供了對元素的快速陣列運算。

  • 它提供各種功能,例如陣列廣播、型別轉換等等。

  • NumPy 通用函式是numpy.ufunc類中的物件。

  • Python 函式也可以透過利用 frompyfunc 庫函式來實現通用化。

  • 當應用相應的陣列算術運算子時,某些 ufunc 會自動呼叫。當使用“+”運算子逐元素新增兩個陣列時,np.add()會在內部被呼叫。

三角函式

由於這些三角函式以弧度為單位進行運算,因此必須透過乘以 pi/180 將角度轉換為弧度。只有這樣我們才能引用三角函式。它們接受一個引數陣列作為輸入。

三角函式 描述
sin, cos, tan 計算角度的正弦、餘弦和正切
arcsin, arccos, arctan 計算反正弦、反餘弦和反正切角度
hypot 計算指定直角三角形的斜邊
sinh, cosh, tanh 計算雙曲正弦、餘弦和正切角度
arcsinh, arccosh, arctanh 計算反雙曲正弦、餘弦和正切
deg2rad 將角度從度轉換為弧度
rad2deg 將角度從弧度轉換為度

示例

# importing numpy module with an alias name import numpy as np # creating an array of angles inputAngles = np.array([0, 30, 45, 60, 90, 180]) # converting input angles from degrees into radians # using deg2rad() function radians_angles = np.deg2rad(inputAngles) # printing the sine values of input angles print('Sine values of input array angles:') sineValues = np.sin(radians_angles) print(sineValues) print() # printing the inverse sine of sine values print('Inverse Sine values of sine values:') print(np.rad2deg(np.arcsin(sineValues))) print() # printing the hyperbolic sine of input angles print('Hyperbolic Sine values of input angles:') sineh_value = np.sinh(radians_angles) print(sineh_value) print() # printing the inverse sine hyperbolic print('Inverse Sine hyperbolic values of input angles:') print(np.sin(sineh_value)) print() # printing the hypotenuse of right angled triangle the triangle_base = 4 triangle_height = 3 print('The hypotenuse of right angled triangle = ', np.hypot(triangle_base, triangle_height))

輸出

執行上述程式後,將生成以下輸出:

Sine values of input array angles:
[0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01
 1.00000000e+00 1.22464680e-16]

Inverse Sine values of sine values:
[0.0000000e+00 3.0000000e+01 4.5000000e+01 6.0000000e+01 9.0000000e+01
 7.0167093e-15]

Hyperbolic Sine values of input angles:
[ 0.          0.54785347  0.86867096  1.24936705  2.3012989  11.54873936]

Inverse Sine hyperbolic values of input angles:
[ 0.          0.52085606  0.76347126  0.94878485  0.74483916 -0.85086591]

The hypotenuse of right angled triangle =  5.0

這裡,numpy.array()函式返回一個 ndarray。ndarray 是一個滿足給定要求的陣列物件

統計函式

統計函式計算陣列元素的平均值、中位數、方差、最小值。以下為它包含的函式:

統計函式 描述
amin, amax 沿指定軸返回陣列的最小值和最大值
ptp 沿指定軸返回陣列的值範圍(最大值-最小值)
median 沿指定軸計算資料的中間值
mean 沿指定軸計算資料的平均值
percentile(a, n, axis) 沿指定軸計算陣列的第 n 個百分位數
std 沿指定軸計算資料的標準差
var 沿指定軸計算資料的方差
average 沿指定軸計算資料的平均值

示例

# importing numpy module with an alias name import numpy as np # creating an array inputArray = np.array([20, 45, 50.5, 60, 55.5, 10]) # printing the minimum value in an array print('Minimum value in an input Array:') print(np.amin(inputArray)) # printing the maximum value in an array print('Maximum value in an input Array:') print(np.amax(inputArray)) # printing the peak to peak value i.e # range of inputArray(maximum-minimum) values print('Range of inputArray(maximum-minimum) values:') print(np.ptp(inputArray)) # printing the 50 percentile of input array print('50 percentile of input array: ') print(np.percentile(inputArray, 50)) # printing the mean of input array print('Mean of an input array:') print(np.mean(inputArray)) # printing the median of input array print('Median of an input array:') print(np.median(inputArray)) # printing the standard deviation of input array print('Standard deviation of an input array:') print(np.std(inputArray)) # printing the variance of input array print('Variance of an input array: ') print(np.var(inputArray)) # printing the average of input array print('Average of an input array: ') print(np.average(inputArray))

輸出

執行上述程式後,將生成以下輸出:

Minimum value in an input Array:
10.0
Maximum value in an input Array:
60.0
Range of inputArray(maximum-minimum) values:
50.0
50 percentile of input array: 
47.75
Mean of an input array:
40.166666666666664
Median of an input array:
47.75
Standard deviation of an input array:
18.598088312751095
Variance of an input array: 
345.88888888888886
Average of an input array: 
40.166666666666664

位操作函式

位操作函式以整數作為輸入引數,並對其二進位制表示執行按位運算。以下為它包含的函式:

位操作函式 描述
bitwise_and 對兩個陣列元素執行按位“與”運算
bitwies_or 對兩個陣列元素執行按位“或”運算
bitwise_xor 對兩個陣列元素執行按位“異或”運算
invert 執行陣列元素的按位取反
left_shift 將元素的位向左移動
right_shift 將元素的位向右移動

示例

# importing numpy module with an alias name import numpy as np # creating two arrays inputArray_1 = np.array([3, 2, 7, 5]) inputArray_2 = np.array([5, 1, 6, 4]) # printing the bitwise "and" operation of two arrays print('Bitwise "and" operation of two arrays:') print(np.bitwise_and(inputArray_1, inputArray_2)) # printing the bitwise "or" operation of two arrays print('Bitwise "or" operation of two arrays:') print(np.bitwise_or(inputArray_1, inputArray_2)) # printing the bitwise "xor" operation of two arrays print('Bitwise "xor" operation of two arrays:') print(np.bitwise_xor(inputArray_1, inputArray_2)) # printing the inversion/not of inputArray_1 print('The inversion/not of inputArray_1:') print(np.invert(inputArray_1)) # left shifting inputArray_1 elements by 1 bit print('left shifting inputArray_1 elements by 1 bit') print(np.left_shift(inputArray_1, 1)) # right shifting inputArray_1 elements by 2 bits print('right shifting inputArray_1 elements by 2 bits:') print(np.right_shift(inputArray_1, 2))

輸出

執行上述程式後,將生成以下輸出:

Bitwise "and" operation of two arrays:
[1 0 6 4]
Bitwise "or" operation of two arrays:[7 3 7 5]
Bitwise "xor" operation of two arrays:
[6 3 1 1]
The inversion/not of inputArray_1:
[-4 -3 -8 -6]
left shifting inputArray_1 elements by 1 bit
[ 6  4 14 10]
right shifting inputArray_1 elements by 2 bits:
[0 0 1 1]

結論

在本文中,我們學習了 Python 中 N 維陣列的所有通用函式以及示例。

更新於: 2022 年 10 月 20 日

785 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.