Numpy ufunc 通用函数
Numpy中的通用函数是简单的数学函数。它只是我们给Numpy库中的数学函数的一个术语。Numpy提供了各种通用函数,涵盖了各种各样的操作。
这些函数包括标准三角函数、用于算术运算的函数、处理复数、统计函数等。通用函数具有以下各种特点
- 这些函数对ndarray(N维数组)即Numpy的数组类进行操作。
 - 它可以执行快速的从元素到数组的操作。
 - 它支持各种功能,如数组广播、类型铸造等。
 - Numpy,通用函数是属于numpy.ufunc类的对象。
 - Python函数也可以使用frompyfunc库函数创建为一个通用函数。
 - 当在数组上使用相应的算术运算符时,一些ufuncs被自动调用。例如,当使用’+’运算符对两个数组进行元素相加时,内部会调用np.add()。
 
Numpy中的一些基本通用函数是-
Trigonometric 函数:
这些函数是以弧度为单位工作的,所以角度需要通过乘以π/180来转换为弧度。只有这样我们才能调用三角函数。它们接受一个数组作为输入参数。它包括以下函数
| 功能 | 说明 | 
|---|---|
| sin, cos, tan | 计算角的正弦、余弦和切线 | 
| arcsin, arccos, arctan | 计算反正弦、反余弦和正切线 | 
| sinh, cosh, tanh | 计算双曲的正弦、余弦和正切线 | 
| arcsinh, arccosh, arctanh | 计算反双曲正弦、余弦和切线 | 
| deg2rad | 将度数转换成弧度 | 
| rad2deg | 将弧度转换成度数 | 
# Python code to demonstrate trigonometric function
import numpy as np
  
# create an array of angles
angles = np.array([0, 30, 45, 60, 90, 180]) 
  
# conversion of degree into radians
# using deg2rad function
radians = np.deg2rad(angles)
  
# sine of angles
print('Sine of angles in the array:')
sine_value = np.sin(radians)
print(np.sin(radians))
  
# inverse sine of sine values
print('Inverse Sine of sine values:')
print(np.rad2deg(np.arcsin(sine_value)))
  
# hyperbolic sine of angles
print('Sine hyperbolic of angles in the array:')
sineh_value = np.sinh(radians)
print(np.sinh(radians))
  
# inverse sine hyperbolic 
print('Inverse Sine hyperbolic:')
print(np.sin(sineh_value)) 
  
# hypot function demonstration
base = 4
height = 3
print('hypotenuse of right triangle is:')
print(np.hypot(base, height))
输出:
Sine of angles in the array:
[  0.00000000e+00   5.00000000e-01   7.07106781e-01   8.66025404e-01
   1.00000000e+00   1.22464680e-16]
Inverse Sine of sine values:
[  0.00000000e+00   3.00000000e+01   4.50000000e+01   6.00000000e+01
   9.00000000e+01   7.01670930e-15]
Sine hyperbolic of angles in the array:
[  0.           0.54785347   0.86867096   1.24936705   2.3012989
  11.54873936]
Inverse Sine hyperbolic:
[ 0.          0.52085606  0.76347126  0.94878485  0.74483916 -0.85086591]
hypotenuse of right triangle is:
5.0
Statistical 函数:
这些函数用于计算数组元素的平均值、中位数、方差、最小值。它包括以下函数
| 功能 | 说明 | 
|---|---|
| amin, amax | 返回数组的最小值或最大值或沿轴的最大值 | 
| ptp | 返回一个数组或一个轴的数值范围(最大-最小)。 | 
| percentile(a, p, axis) | 计算数组的第p个百分位数或沿指定轴的百分位数 | 
| median | 计算沿指定轴的数据的中位数 | 
| mean | 计算沿指定轴线的数据的平均值 | 
| std | 计算沿指定轴的数据的标准偏差 | 
| var | 计算沿指定轴线的数据方差 | 
| average | 计算沿指定轴线的数据的平均值 | 
# Python code demonstrate statistical function
import numpy as np
  
# construct a weight array
weight = np.array([50.7, 52.5, 50, 58, 55.63, 73.25, 49.5, 45])
  
# minimum and maximum 
print('Minimum and maximum weight of the students: ')
print(np.amin(weight), np.amax(weight))
  
# range of weight i.e. max weight-min weight
print('Range of the weight of the students: ')
print(np.ptp(weight))
  
# percentile
print('Weight below which 70 % student fall: ')
print(np.percentile(weight, 70))
   
# mean 
print('Mean weight of the students: ')
print(np.mean(weight))
  
# median 
print('Median weight of the students: ')
print(np.median(weight))
  
# standard deviation 
print('Standard deviation of weight of the students: ')
print(np.std(weight))
  
# variance 
print('Variance of weight of the students: ')
print(np.var(weight))
  
# average 
print('Average weight of the students: ')
print(np.average(weight))
输出:
Minimum and maximum weight of the students: 
45.0 73.25
Range of the weight of the students: 
28.25
Weight below which 70 % student fall: 
55.317
Mean weight of the students: 
54.3225
Median weight of the students: 
51.6
Standard deviation of weight of the students: 
8.05277397857
Variance of weight of the students: 
64.84716875
Average weight of the students: 
54.3225
Bit-twiddling 函数:
这些函数接受整数值作为输入参数,并对这些整数的二进制表示进行逐位操作。它包括如下函数
| 功能 | 说明 | 
|---|---|
| bitwise_and | 对两个数组元素进行位和操作 | 
| bitwies_or | 对两个数组元素进行位或操作 | 
| bitwise_xor | 对两个数组元素进行bitwise xor操作 | 
| invert | 对一个数组元素进行比特反转。 | 
| left_shift | 将元素的位数向左移动 | 
| right_shift | 将元素的位数向左移。 | 
# Python code to demonstrate bitwise-function
import numpy as np
  
# construct an array of even and odd numbers
even = np.array([0, 2, 4, 6, 8, 16, 32])
odd = np.array([1, 3, 5, 7, 9, 17, 33])
  
# bitwise_and
print('bitwise_and of two arrays: ')
print(np.bitwise_and(even, odd))
  
# bitwise_or
print('bitwise_or of two arrays: ')
print(np.bitwise_or(even, odd))
  
# bitwise_xor
print('bitwise_xor of two arrays: ')
print(np.bitwise_xor(even, odd))
   
# invert or not
print('inversion of even no. array: ')
print(np.invert(even))
  
# left_shift 
print('left_shift of even no. array: ')
print(np.left_shift(even, 1))
  
# right_shift 
print('right_shift of even no. array: ')
print(np.right_shift(even, 1))
输出:
bitwise_and of two arrays: 
[ 0  2  4  6  8 16 32]
bitwise_or of two arrays: 
[ 1  3  5  7  9 17 33]
bitwise_xor of two arrays: 
[1 1 1 1 1 1 1]
inversion of even no. array: 
[ -1  -3  -5  -7  -9 -17 -33]
left_shift of even no. array: 
[ 0  4  8 12 16 32 64]
right_shift of even no. array: 
[ 0  1  2  3  4  8 16]
极客教程