numpy系列之常用的数据分析函数

212 阅读3分钟

1.元素级函数

1.1 函数说明

元素级函数就是针对数组中的每个元素执行相同的操作,主要函数及其说明如下表所示

函数说明
abs求每个元素的绝对值
sqrt求每个元素的平方根
square求每个元素的平方
exp求各个元素以e为底的指数
log、log10、log2、loglp求每个元素以e为底、以10为底、以2为底的对数,以及log(1+x)
modf适用于浮点数,将小数和整数部分以独立的数组返回
isnan用来判断是否是NaN,返回一个布尔值

1.2 函数用法示例

先新建一个数组

import numpy as np
​
arr1 = np.array([1.2, 2.4, 3.6, 4.8])
print(arr1)

result:

[1.2 2.4 3.6 4.8]

1.2.1 求各个元素的平方

print(np.square(arr1))

result:

[ 1.44  5.76 12.96 23.04]

1.2.2 将每个元素的小数和整数部分以独立的数组返回

print(np.modf(arr1))

result:

(array([0.2, 0.4, 0.6, 0.8]), array([1., 2., 3., 4.]))

2.描述统计函数

2.1 函数说明

描述统计函数是对整个numpy数组或某条轴的数据进行统计运算,主要的函数及其说明如下表所示

函数说明
sum对数组中全部元素或者某行元素或者某列元素求和
mean对数组中全部元素或者某行元素或者某列元素求平均值
std、var对数组中全部元素或者某行元素或者某列元素求标准差、方差
min、max对数组中全部元素或者某行元素或者某列元素求最小值、最大值
argmin、argmax对数组中全部元素或者某行元素或者某列元素求最小值、最大值对应的索引
cumsum所有元素的累计和,结果以数组的形式返回
cumprod所有元素的累计积,结果以数组的形式返回

2.2 函数用法示例

先新建一个数组

import numpy as np
​
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr1)

result:

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

2.2.1 求累计和

print(arr1.cumsum())

result:

[ 1  3  6 10 15 21 28 36 45]

这里第2个元素对应前2个元素的和,第3个元素对应前3个元素的和,后面依次类推

2.2.2 求和

2.2.2.1 对整个数组求和

print(arr1.sum())

result:

45

2.2.2.2 对每一行求和

print(arr1.sum(axis=1))

result:

[ 6 15 24]

这里第1个元素是第1行元素1+2+3的结果,第2个是第2行元素4+5+6的结果

2.2.2.3 对每一列求和

print(arr1.sum(axis=0))

result:

[12 15 18]

这里第1个元素是第1列元素1+4+7的结果,第2个是第2行元素2+5+8的结果

3.条件函数

numpy数组中的条件函数np.where(condition, x,y)类似于Excel中的if(codition, True, False)函数。如果条件(condition)为真则返回x,如果条件为假则返回y

import numpy as np
​
arr = np.array([56, 61, 55])
print(arr)

result:

[56 61 55]
print(np.where(arr > 60, '及格', '不及格'))

result:

['不及格' '及格' '不及格']
print(np.where(arr > 60))

result:

(array([1], dtype=int64),)

从结果可以看出,如果不传x,y那么结果返回的就是满足条件的值对应的索引

4.集合关系

每个数组都可以当做一个集合,集合的关系其实就是两个数组的关系,主要有包含、交集、并集、差集四种

新建两个数组

import numpy as np
​
arr1 = np.array([1, 2, 3, 4])
print(arr1)

result:

[1 2 3 4]
arr2 = np.array([2, 4, 6, 8])
print(arr2)

result:

[2 4 6 8]

4.1包含

判断数组arr1中包含数组arr2中的哪些值,如果包含返回True,不包含则返回False

print(np.in1d(arr1, arr2))

result:

[False  True False  True]

4.2 交集

print(np.intersect1d(arr1, arr2))

result:

[2 4]

4.3 并集

print(np.union1d(arr1, arr2))

result:

[1 2 3 4 6 8]

4.4 差集

print(np.setdiff1d(arr1, arr2))

result:

[1 3]