什么是Python中n维数组的通用函数?

什么是Python中n维数组的通用函数?

在本文中,我们将讲解Python中的通用函数以及它们如何应用于n维数组。

通用函数(universal function) (或 ufunc )是一种针对ndarray数组逐个元素操作的函数,提供数组广播(array broadcasting)、类型转换和各种其他标准功能。换句话说,ufunc是一个固定接受数量的标量输入并返回数量固定的标量输出的函数的“矢量化”封装器。

它们是NumPy库中的简单数学函数。 NumPy 包括支持各种操作的 通用函数

这些函数包含标准三角函数、算术运算、复数处理、统计函数等。以下是通用函数的一些特点:

  • 这些函数与ndarray(N维数组)一起使用,这是NumPy的数组类。

  • 它提供快速的元素数组操作。

  • 它提供各种函数,如数组广播,类型转换等。

  • NumPy通用函数是 numpy.ufunc 类中的对象。

  • 利用frompyfunc库函数可以使Python函数成为通用函数。

  • 当应用相应的数组算术运算符时,某些ufunc会自动调用。当使用“+”运算符逐元素添加两个数组时,内部将调用 np.add()

更多Python相关文章,请阅读:Python 教程

三角函数

由于这些三角函数操作是以弧度为单位进行的,因此必须将角度乘以pi/180转换为弧度。只有这样,才能使用三角函数。它们接受一个参数数组作为输入。

三角函数名称 描述
sin,cos,tan 计算角度的正弦、余弦和正切
arcsin,arccos,arctan 计算反正弦、反余弦和反正切角度
hypot 计算指定直角三角形的斜边长度
sinh,cosh,tanh 计算双曲正弦、余弦和正切角度
arcsinh,arccosh,arctanh 计算反双曲正弦、余弦和正切角度
deg2rad 将角度从度转换为弧度
rad2deg 将角度从弧度转换为度

示例:

# 导入numpy模块并设置别名为np
import numpy as np

# 创建一个角度数组
inputAngles = np.array([0, 30, 45, 60, 90, 180])

# 将输入角度从度转换为弧度,使用deg2rad() 函数
radians_angles = np.deg2rad(inputAngles)

# 打印输入角度的正弦值
print('输入数组角度的正弦值:')
sineValues = np.sin(radians_angles)
print(sineValues)
print()

# 打印正弦值的反正弦值
print('正弦值的反正弦值:')
print(np.rad2deg(np.arcsin(sineValues)))
print()

# 打印输入角度的双曲正弦值
print('输入角度的双曲正弦值:')
sineh_value = np.sinh(radians_angles)
print(sineh_value)
print() 

# 打印双曲正弦值的反正弦值 
print('双曲正弦值的反正弦值:')
print(np.sin(sineh_value)) 
print()

# 打印直角三角形的斜边
triangle_base = 4
triangle_height = 3
print('直角三角形的斜边 = ', np.hypot(triangle_base, triangle_height))

输出结果

在执行上述代码后将会产生以下输出结果 −

输入数组角度的正弦值:
[0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01
 1.00000000e+00 1.22464680e-16]

正弦值的反正弦值:
[0.0000000e+00 3.0000000e+01 4.5000000e+01 6.0000000e+01 9.0000000e+01
 7.0167093e-15]

输入角度的双曲正弦值:
[ 0.          0.54785347  0.86867096  1.24936705  2.3012989 11.54873936]

双曲正弦值的反正弦值:
[ 0.          0.52085606  0.76347126  0.94878485  0.74483916 -0.85086591]

直角三角形的斜边 = 5.0

在此:

  • numpy.array()函数 返回一个ndarray,它是一个符合给定要求的数组对象

统计函数

统计函数用于计算数组元素的平均值、中位数、方差和最小值。函数如下:

统计函数 描述
amin, amax 返回沿指定轴的数组的最小值和最大值
ptp 返回沿指定轴的数组的值范围(最大值-最小值)
median 计算沿指定轴的数据的中位数
mean 计算沿指定轴的数据的平均值
percentile(a, n, axis) 计算沿指定轴的数组的第n个百分位数
std 计算沿指定轴的数据的标准偏差
var 计算沿指定轴的数据的方差
average 计算沿指定轴的数据的平均值

示例

# 导入带有别名的numpy模块
import numpy as np

# 创建数组
inputArray = np.array([20, 45, 50.5, 60, 55.5, 10])

# 打印数组中的最小值
print('输入数组中的最小值:')
print(np.amin(inputArray))

# 打印数组中的最大值
print('输入数组中的最大值:')
print(np.amax(inputArray))

# 打印峰峰值,即输入数组最大值减去最小值的值范围
print('输入数组的值范围(最大值-最小值):')
print(np.ptp(inputArray))

# 打印输入数组的50%百分位数
print('输入数组的50%百分位数:')
print(np.percentile(inputArray, 50))

# 打印输入数组的平均值
print('输入数组的平均值:')
print(np.mean(inputArray))

# 打印输入数组的中位数
print

输出

输入数组中的最小值:
10.0
输入数组中的最大值:
60.0
输入数组的值范围(最大值-最小值):
50.0
输入数组的50%百分位数:
50.75
输入数组的平均值:
38.333333333333336
输入数组的中位数:
47.5
输入数组的标准偏差:
18.19785776458788
输入数组的方差:
331.80555555555554
输入数组的平均值:
38.333333333333336

在执行时,上面的程序将生成以下输出,如下所示:

输入数组中的最小值:
10.0
输入数组中的最大值:
60.0
输入数组的范围(最大值 - 最小值):
50.0
输入数组的50th百分位数:
47.75
输入数组的平均值:
40.166666666666664
输入数组的中位数:
47.75
输入数组的标准差:
18.598088312751095
输入数组的方差:
345.88888888888886
输入数组的平均值:
40.166666666666664

位操作函数

位操作函数将整数作为输入参数,并对它们的二进制表示执行位操作。以下是它包含的函数。

位操作函数 说明
按位与 对两个数组元素执行按位“与”操作
按位或 对两个数组元素执行按位“或”操作
按位异或 对两个数组元素执行按位“异或”操作
反转 对数组元素进行按位反转
左移 将元素的位向左移动
右移 将元素的位向右移动

示例

# 使用别名导入numpy模块
import numpy as np

# 创建两个数组
inputArray_1 = np.array([3, 2, 7, 5])
inputArray_2 = np.array([5, 1, 6, 4])

# 打印两个数组的按位“与”操作
print('两个数组的按位"与"操作:')
print(np.bitwise_and(inputArray_1, inputArray_2))

# 打印两个数组的按位“或”操作
print('两个数组的按位"或"操作:')
print(np.bitwise_or(inputArray_1, inputArray_2))

# 打印两个数组的按位“异或”操作
print('两个数组的按位"异或"操作:')
print(np.bitwise_xor(inputArray_1, inputArray_2))

# 打印输入Array_1的反转或非操作结果
print('输入Array_1的反转或非操作结果:')
print(np.invert(inputArray_1))

# 将inputArray_1的元素左移1位
print('将inputArray_1的元素左移1位')
print(np.left_shift(inputArray_1, 1))

# 将inputArray_1的元素右移2位
print('将inputArray_1的元素右移2位:')
print(np.right_shift(inputArray_1, 2))

输出

在执行时,以上程序将生成以下输出 −

两个数组的按位“与”运算:
[1 0 6 4]
两个数组的按位“或”运算:
[7 3 7 5]
两个数组的按位“异或”运算:
[6 3 1 1]
inputArray_1 的反转/否定:
[-4 -3 -8 -6]
inputArray_1 元素向左移动一位:
[6 4 14 10]
inputArray_1 元素向右移动两位:
[0 0 1 1]

结论

在本文中,我们学习了Python n维数组中的所有通用函数,以及相关示例。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程