小yo 博客

Back

Python数据分析-numpy_function

1.基本数学函数

import numpy as np
# 计算平方根
print(np.sqrt(9))
print(np.sqrt([1,4,9])) # 默认返回浮点数
arr = [1,25,64]
print(np.sqrt(arr))
3.0
[1. 2. 3.]
[1. 5. 8.]
# 计算指数
print(np.exp(1)) # e的1次方
2.718281828459045
# 计算自然对数
print(np.log(2.71)) # ln(e)
0.9969486348916096
# 计算正弦值、余弦值
print(np.sin(1))
print(np.cos(np.pi))
0.8414709848078965
-1.0
# 计算绝对值
arr = np.array([-1,1,-2,-3])
print(np.abs(arr))
[1 1 2 3]
# 计算a的b次幂
print(np.power(arr,3))
[ -1   1  -8 -27]
# 四舍五入
print(np.round([3.5,2.2,4.5])) # 四舍五入,但是0.5向偶数凑
[4. 2. 4.]
# 向上取整,向下取整
arr = np.array([1.5,2.1,4.5,])
print(np.ceil(arr))
print(np.floor(arr))
[2. 3. 5.]
[1. 2. 4.]
# 检测缺失值NaN
np.isnan([1,2,np.nan,3])
array([False, False,  True, False])

2.统计函数

arr = np.random.randint(1,20,8)
print(arr)
[10  4  9  9  6  4 17  5]
# 求和
print(np.sum(arr))
64
# 计算平均值
print(np.mean(arr))
8.0
# 计算中位数
print(np.median(arr))
7.5
# 计算标准差和方差
print(np.var(arr)) # 方差
print(np.std(arr)) # 标准差
16.5
4.06201920231798
# 计算最大值和最小值
print(np.max(arr),np.argmax(arr)) # agrmax用于把最大值的索引找出来
print(np.min(arr))
17 6
4
# 分位数
print(np.percentile(arr,25))
4.75
# 累计和、累计积
print(np.cumsum(arr))
print(np.cumprod(arr))
[10 14 23 32 38 42 59 64]
[     10      40     360    3240   19440   77760 1321920 6609600]

3.比较函数

# 是否大于
print(np.greater([3,4,5,6,7],4)) # 数组元素依次和4进行比较判断是否大于
# 是否小于
print(np.less([3,4,5,6,7],4))
# 是否等于
print(np.equal([3,4,5,6,7],4))
print(np.equal([3,4,5],[3,4,6]))
[False False  True  True  True]
[ True False False False False]
[False  True False False False]
[ True  True False]
# 逻辑运算
print(np.logical_and([0,1],[1,1]))
print(np.logical_or([0,1],[1,1]))
print(np.logical_not([1,0]))
[False  True]
[ True  True]
[False  True]
# 检查元素是否至少一个元素为True
print(np.any([0,0,1,0]))
# 检查元素是否全部为True
print(np.all([0,0,1,0]))
True
False
# 自定义条件
# print(np.where(条件,符合条件,不符合条件))
a = np.array([1,2,3,4,5])
print(np.where(a>3,a,0))
print(np.where(a<5,a,0))
# 用于分类
score = np.random.randint(0,100,20)
print(score)
print(np.where(score<60,'不及格',np.where(
    score<80,'良好','优秀'
)
              ))

# 替代
print(np.select([score>=80,(score>=60)&(score<80),score<60],['优秀','良好','不及格'],default='未知'))
[0 0 0 4 5]
[1 2 3 4 0]
[30 21 27 73 94 15 33 13 44 83 59 20  5 97 73 28 81 28 43 49]
['不及格' '不及格' '不及格' '良好' '优秀' '不及格' '不及格' '不及格' '不及格' '优秀' '不及格' '不及格'
 '不及格' '优秀' '良好' '不及格' '优秀' '不及格' '不及格' '不及格']
['不及格' '不及格' '不及格' '良好' '优秀' '不及格' '不及格' '不及格' '不及格' '优秀' '不及格' '不及格'
 '不及格' '优秀' '良好' '不及格' '优秀' '不及格' '不及格' '不及格']

4.排序函数

# 排序
np.random.seed(0)
arr1 = np.random.randint(1,100,20)
print(arr1)
arr1.sort() # 直接排序并改变arr
print(arr1)
np.random.seed(0)
arr2 = np.random.randint(1,100,20)
print(arr2)
print(np.sort(arr2)) # 不改变arr
print(np.argsort(arr2)) # 排序后的索引
[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]
[10 13 22 37 40 45 47 48 59 65 66 68 68 71 84 88 88 89 89 89]
[45 48 65 68 68 10 84 22 37 88 71 89 89 13 59 66 40 88 47 89]
[10 13 22 37 40 45 47 48 59 65 66 68 68 71 84 88 88 89 89 89]
[ 5 13  7  8 16  0 18  1 14  2 15  3  4 10  6 17  9 11 12 19]
# 去重函数
print(np.unique(arr2)) # 删除重复值的同时进行排序
[10 13 22 37 40 45 47 48 59 65 66 68 71 84 88 89]

5.其他函数

# 数组的拼接
arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
print(np.concatenate((arr1,arr2))) # 注意要将需要拼接的数组放到一个括号里
[1 2 3 4 5 6]
# 数组的分割
print(np.split(arr,5)) #分成5份
print(np.split(arr,[6,12,18]))
[array([10, 13, 22, 37]), array([40, 45, 47, 48]), array([59, 65, 66, 68]), array([68, 71, 84, 88]), array([88, 89, 89, 89])]
[array([10, 13, 22, 37, 40, 45]), array([47, 48, 59, 65, 66, 68]), array([68, 71, 84, 88, 88, 89]), array([89, 89])]
# 调整数组的形状
print(np.reshape(arr,[4,5]))
[[10 13 22 37 40]
 [45 47 48 59 65]
 [66 68 68 71 84]
 [88 88 89 89 89]]
Python数据分析-numpy_function
https://smallyo.top/blog/04fb78fc1274d76e
Author小yo
Published atNovember 30, 2025