Python数据分析 1-5 NumPy中ufunc函数(一)主要介绍NumPy中常用的通用函数:基本数学函数、三角函数和反三角函数和统计类函数

1 引入NumPy


#引入numpy
import numpy as np
np.__version__

'1.20.1'

2 基本数学函数
NumPy中基本数学函数有加法、减法、乘法、除法、乘方、开方、对数等,
numpy.add()函数用于两个数组对应位置的元素相加。

# 加法
arr1 = np.array([2, 3, 4])#创建数组arr1
print(arr1)               #输出数组arr1
arr2 = np.array([5, 5, 5])#创建数组arr2
print(arr2)               #输出数组arr2
print(np.add(arr1, arr2)) #使用numpy.add()函数实现数组arr1与数组arr2的加法运算
print(arr1 + arr2)        #函数的运算结果和arr1 + arr2一致




[2 3 4]
[5 5 5]
[7 8 9]
[7 8 9]

numpy.subtract()函数用于两个数组对应位置的元素相减。

# 减法
arr1 = np.array([2, 3, 4])    #创建数组arr1
print(arr1)                   #输出数组arr1
arr2 = np.array([5, 5, 5])    #创建数组arr2
print(arr2)                   #输出数组arr2
print(np.subtract(arr1, arr2))#使用numpy.subtract()函数实现数组arr1与数组arr2的减法运算
print(arr1 - arr2)            #函数的运算结果和arr1 - arr2一致


[2 3 4]
[5 5 5]
[-3 -2 -1]
[-3 -2 -1]

numpy.multiply()函数用于两个数组对应位置的元素相乘。

# 乘法
arr1 = np.array([2, 3, 4])    #创建数组arr1
print(arr1)                   #输出数组arr1
arr2 = np.array([5, 5, 5])    #创建数组arr2
print(arr2)                   #输出数组arr2
print(np.multiply(arr1, arr2))#使用numpy.multiply()函数实现数组arr1与数组arr2的乘法运算
print(arr1 * arr2)            #函数的运算结果和arr1 * arr2一致

[2 3 4]
[5 5 5]
[10 15 20]
[10 15 20]

numpy.divide()函数用于两个数组对应位置的元素相除

# 除法
arr1 = np.array([2, 3, 4])  #创建数组arr1
print(arr1)                 #输出数组arr1
arr2 = np.array([5, 5, 5])  #创建数组arr2
print(arr2)                 #输出数组arr2
print(np.divide(arr1, arr2))#使用numpy.divide()函数实现数组arr1与数组arr2的除法运算
print(arr1 / arr2)          #函数的运算结果和arr1 / arr2一致

[2 3 4]
[5 5 5]
[0.4 0.6 0.8]
[0.4 0.6 0.8]

numpy.power(x,y)函数用于计算x的y次方:

x,y都为数字,计算x的y次方,返回一个数字
x为列表,y为数字,计算x中每个元素的y次方,返回列表
x为数字,y为列表,计算x的每个y元素次方,返回列表
x为列表,y为列表,计算对应下标的x与y的次方,返回列表

# 乘方
arr1 = np.array([2, 3, 4])   #创建数组arr1
print(arr1)                  #输出数组arr1
arr2 = np.array([5, 5, 5])   #创建数组arr2
print(arr2)                  #输出数组arr2
print(np.power(arr1, arr2))  #使用numpy.divide()函数实现数组arr1与数组arr2的乘方运算
print(arr1 ** arr2)          #函数的运算结果和arr1 ** arr2一致
[2 3 4]
[5 5 5]
[  32  243 1024]
[  32  243 1024]

numpy.sqrt()函数用于按元素确定数组的正平方根。

# 开方
arr1 = np.array([2, 3, 4])
print(arr1)
print(np.sqrt(arr1))#输出数组中每个元素的正平方根
[2 3 4]
[1.41421356 1.73205081 2.        ]

numpy.log()用于以e为底的对数函数,即自然对数运算
numpy.log2()计算以2为底的对数
numpy.log10()计算以10为底的对数

# 对数
arr1 = np.array([2, 3, 4])
print(arr1)
print(np.log2(arr1)) #计算数组元素以2为底的对数
print(np.log(arr1))  #计算数组元素以e为底的对数
print(np.log10(arr1))#计算数组元素以10为底的对数
[2 3 4]
[1.        1.5849625 2.       ]
[0.69314718 1.09861229 1.38629436]
[0.30103    0.47712125 0.60205999]

3 三角函数和反三角函数
NumPy可以实现角度和弧度的相互转化:

numpy.deg2rad()函数用于实现角度向弧度的转换
numpy.rad2deg()函数用于实现弧度向角度的转换

# 角度和弧度的互转
print(np.pi)             #输出圆周率
print(np.deg2rad(60))    #角度转化为弧度
print(np.rad2deg(np.pi)) #弧度转换为角度
3.141592653589793
1.0471975511965976
180.0

NumPy中直接使用
numpy.sin()函数求正弦,
numpy.cos()函数求余弦,
numpy.tan()函数求正切,
同理,
numpy.arcsin()函数用于求反正弦,
numpy.arccos()函数用于求反余弦,
numpy.arcsin()函数用于求反正切。

# 正弦函数
print(np.sin(np.deg2rad(30)))     #计算30度的正弦值
# 反正弦函数
print(np.rad2deg(np.arcsin(0.5))) #计算0.5的反正弦
# 余弦函数
print(np.cos(np.deg2rad(45)))      #计算45度的余弦
# 反余弦函数
print(np.rad2deg(np.arccos(0.5)))  #计算0.5的反余弦
# 正切函数
print(np.tan(np.deg2rad(45)))      #计算45的正切
# 反正切函数
print(np.rad2deg(np.arctan(1)))    #计算1的反正切

0.49999999999999994
30.000000000000004
0.7071067811865476
60.00000000000001
0.9999999999999999
45.0

4 统计类函数
NumPy库支持对整个数组或指定轴向是数据进行统计计算:

numpy.sum()函数用于求和
numpy.mean()函数用于求算数平均数
numpy.std()函数和numpy.var()函数用于求标准差和方差
numpy.min()函数和numpy.max()函数用于求最小值和最大值
numpy.argmin()函数和numpy.argmax()函数用于最小元素和最大元素的索引
numpy.cumsum()函数用于求所有元素的累计和
numpy.cumprod()函数用于求所有元素的累计积

# 求和
arr1 = np.arange(5)#创建数组
print(arr1)
print(arr1.sum())#求数组arr1的和
[0 1 2 3 4]
10

均值

# 均值
arr1 = np.arange(5)
print(arr1)
print(arr1.mean())#求数组arr1的均值
[0 1 2 3 4]
2.0

numpy.average()函数用于求数组的加权平均,weights表示权重。

期望

# 期望
arr1 = np.arange(5)
p = np.array([0.1, 0.1, 0.2, 0.4, 0.2])#权值数组
print(arr1)
print(p)
print(np.average(a=arr1, weights=p))#求加权平均
[0 1 2 3 4]
[0.1 0.1 0.2 0.4 0.2]
2.5
# 方差
arr1 = np.arange(5)
print(arr1)
print(arr1.var())#求数组arr1的方差
[0 1 2 3 4]
2.0
# 标准差
arr1 = np.arange(5)
print(arr1)
print(arr1.std())#求数组arr1的标准差
[0 1 2 3 4]
1.4142135623730951
# 最大值
arr1 = np.arange(5)
print(arr1)
print(arr1.max())#求数组arr1中元素最大值
[0 1 2 3 4]
4
# 最小值
arr1 = np.arange(5)
print(arr1)
print(arr1.min())#求数组arr1中元素最小值


[0 1 2 3 4]
0

numpy.median()函数用于求数组的中位数。

# 中位数
arr1 = np.arange(5)
print(arr1)
print(np.median(arr1))#求数组arr1的中位数

[0 1 2 3 4]
2.0

numpy.percentile()函数用来计算数组的百分位数,主要参数如下:

a : array,用来算分位数的对象,可以是多维的数组
q : 介于0-100的浮点型,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置的数就是(25,75)
axis : 坐标轴的方向,取0或1
out : 输出数据的存放对象,参数要与预期输出有相同的形状和缓冲区长度
overwrite_input : bool:默认False,为True时及计算直接在数组内存计算,计算后原数组无法保存
interpolation : 取值范围{‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’},
默认linear,比如取中位数,但是中位数有两个数字6和7,选不同参数来调整输出。

# 百分位
arr1 = np.arange(200)
print(arr1)
print(np.percentile(arr1, q=75))#计算数组arr1的75%分位数


[  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17
  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35
  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53
  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71
  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89
  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107
 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
 198 199]
149.25

5 舍入和取整
numpy.around()函数返回四舍五入后的结果,主要参数如下:

a: array对象
decimals: 要舍入的小数位数,默认为0,decimals若为正数则代表保留几位小数,若为0则代表保留整数位,decimals若为负数则代表要四舍五入到小数点左侧

# 四舍五入
arr = np.random.rand(5)            #生成一个含5个随机数的数组
print(arr)
print(np.around(a=arr, decimals=2))#数组中每个元素均保留两位小数
[0.83617728 0.34070684 0.52380177 0.24061854 0.41861933]
[0.84 0.34 0.52 0.24 0.42]

numpy.ceil()函数返回数值向上取整的结果。

# 向上取整
arr = np.random.rand(5)#生成一个含5个随机数的数组
print(arr)
print(np.ceil(arr))#数组中的每个元素均向上取整

[0.54371018 0.11724986 0.43647478 0.79332156 0.41583794]
[1. 1. 1. 1. 1.]

numpy.floor()函数返回数值向下取整的结果。

# 向下取整
arr = np.random.rand(5)#生成一个含5个随机数的数组
print(arr)
print(np.floor(arr))#数组中的每个元素均向下取整

[0.01648925 0.86765465 0.25175567 0.21750589 0.06665321]
[0. 0. 0. 0. 0.]
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值