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 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告