首页Python【Python数据分析】8...

【Python数据分析】8.数组通用函数(ufunc)


本系列文章配套代码获取有以下三种途径:

  • 可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):

https://returu.github.io/Python_Data_Analysis/lab/index.html
链接:https://pan.baidu.com/s/1MYkeYeVAIRqbxezQECHwcA?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Data_Analysis

根据《Python for Data Analysis 3rd Edition》翻译整理

—————-————————————-

通用函数(ufunc)是在ndarray数组中进行逐元素操作的函数,可以看做是相对应的简单函数的向量化封装,分为一元函数和二元函数。

1.一元函数:

一元函数是对ndarray数组中的数据执行元素级运算的函数。

常用的一元函数如下所示:

函数
说明
abs, fabs 计算数组各元素的绝对值
sqrt 计算数组各元素的平方根
square 计算数组各元素的平方
exp 计算数组各元素的指数值
log, log10, log2, log1p 计算数组各元素的自然对数、10底对数、2底对数、log(1 + x)
sign 计算数组各元素的符号值,1(+),0,-1(-)
ceil 计算数组各元素的ceiling值
floor 计算数组各元素的floor值
rint 计算数组各元素的四舍五入值
modf 计算数组各元素的小数和整数部分,以两个独立数组形式返回
isnan 返回布尔数组,表明每个值是否为NaN(非数字)。
isfinite, isinf 返回布尔数组,分别表示每个元素是有限的(非inf,非NaN)还是无限的

cos, cosh, sin, sinh,

tan, tanh

计算数组各元素的三角函数
arccos, arccosh, arcsin, arcsinh, arctan, arctanh 计算数组各元素的反三角函数
logical_not 逻辑非
新的ufuncs会不断被添加到NumPy中,所以最全、最新的内容可以查阅在线文档。
 1import numpy as np
2
3>>> arr = np.arange(-3,3).reshape(2,3) * 2.3
4>>> arr
5array([[-6.9, -4.6, -2.3],
6       [ 0. ,  2.3,  4.6]]
)
7
8# 计算数组各元素的平方
9>>> np.square(arr)
10array([[47.61, 21.16,  5.29],
11       [ 0.  ,  5.29, 21.16]]
)
12
13# 计算数组各元素的符号值
14>>> np.sign(arr)
15array([[-1., -1., -1.],
16       [ 0.,  1.,  1.]]
)
17
18# 计算数组各元素的ceiling值
19# 即大于或等于该数字的最小整数——向上取整
20>>> np.ceil(arr)
21array([[-6., -4., -2.],
22       [ 0.,  3.,  5.]]
)
23
24# 计算数组各元素的floor
25# 即小于或等于每个元素的最大整数——向下取整
26>>> np.floor(arr)
27array([[-7., -5., -3.],
28       [ 0.,  2.,  4.]]
)
29
30# 计算数组各元素的四舍五入值
31>>> np.rint(arr)
32array([[-7., -5., -2.],
33       [ 0.,  2.,  5.]]
)
34
35# 计算数组各元素的小数和整数部分
36# 以两个独立数组形式返回
37>>> np.modf(arr)
38(array([[-0.9, -0.6, -0.3],
39        [ 0. ,  0.3,  0.6]]
),
40 array([[-6., -4., -2.],
41        [ 0.,  2.,  4.]]
))
42
43# 逻辑非
44>>> x = np.arange(5)
45>>> x
46array([01234])
47>>> np.logical_not(x<3)
48array([False, False, False,  True,  True])

2.二元函数:

元函数接收两个数组并返回一个数组作为结果。

常用的二元函数如下所示:

函数 说明
add 两个数组各元素进行对应加法运算
subtract 两个数组各元素进行对应减法运算
multiply 两个数组各元素进行对应乘法运算
divide, floor_divide 两个数组各元素进行对应除法、整除运算
power 将第二个数组的元素作为第一个数组对应元素的幂次方
maximum, fmax 元素级的最大值计算
minimum, fmin 元素级的最小值计算
mod 元素级的模运算
copysign(x,y) 将数组y中各元素的符号赋值给数组x对应元素
greater, greater_equal, less, less_equal, equal, not_equal 算术比较,产生布尔型数组,与数学操作符(> < >= <= == !=)效果一致

logical_and, logical_or,

logical_xor

逻辑与,逻辑或,逻辑异或


 1import numpy as np
2
3>>> arr1 = np.random.randint(-20 , 20 , (2,3))
4>>> arr1
5array([[ -5,  -1,  -3],
6       [-18-15,   1]])
7
8>>> arr2 = np.random.randint(-20 , 20 , (2,3))
9>>> arr2
10array([[  5,   1-11],
11       [-18,  16-19]])
12
13# 加法
14>>> np.add(arr1 , arr2)
15array([[  0,   0-14],
16       [-36,   1-18]])
17
18# 除法
19>>> np.divide(arr1,arr2)
20array([[-1.        , -1.        ,  0.27272727],
21       [ 1.        , -0.9375    , -0.05263158]])
22
23# 整除运算
24>>> np.floor_divide(arr1,arr2)
25array([[-1-1,  0],
26       [ 1-1-1]], dtype=int32)
27
28# 元素级的最大值计算
29>>> np.maximum(arr1,arr2)
30array([[  5,   1,  -3],
31       [-18,  16,   1]])
32
33# copysign(x,y)将数组y中各元素的符号赋值给数组x对应元素
34>>> np.copysign(arr1,arr2)
35array([[  5.,   1.,  -3.],
36       [-18.,  15.,  -1.]])
37
38# 算术比较,与数学操作符(> < >= <= == !=)效果一致
39>>> np.greater(arr1,arr2)
40array([[FalseFalse,  True],
41       [FalseFalse,  True]])
42>>> arr1 > arr2
43array([[FalseFalse,  True],
44       [FalseFalse,  True]])
45
46# 逻辑与,逻辑或,逻辑异或
47>>> x = np.arange(5)
48>>> x
49array([01234])
50
51>>> np.logical_and(x>1, x<4)
52array([FalseFalse,  True,  TrueFalse])
53
54>>> np.logical_or(x>1, x<4)
55array([ True,  True,  True,  True,  True])
56
57>>> np.logical_xor(x>1, x<4)
58array([ True,  TrueFalseFalse,  True])


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments