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]