一、计算函数
计算函数包括:
max()
——最大值min()
——最小值mean()
——平均值median()
——中位数std()
——标准差var()
——方差sum()
——求和quantile()
——分位数
调用语法(基本类似):
# 维度分别代表2学校、3年级、4班级
my_matrix = np.random.randint(20,40,24).reshape(2,3,4)
my_matrix
>>>
array([[[38, 32, 21, 20],
[22, 25, 21, 25],
[21, 23, 38, 39]],
[[38, 23, 29, 32],
[36, 26, 39, 32],
[34, 30, 28, 34]]])
my_matrix.sum()
>>>
706
部分维度计算方式:
# 把年级维度和班级维度聚合,只保留学校的
my_matrix.sum(axis=(1,2))
>>>
array([325, 381])
特殊调用median() 、quantile() :
NumPy的聚合函数里,median()
、quantile()
俩不能直接通过数组调用,而必须使用np.median()
和np.quantile()
来实现,并且后者具有参数q表述分位数。
np.quantile(my_matrix,axis=-1,q=0.5) # -1 表示倒数第一维
np.median(my_matrix,axis = -1)
>>>
# 因为中位数和0.5分位数一致,所以结果是相同的
array([[27. , 28. , 25.5],
[26.5, 27.5, 31. ]])
array([[27. , 28. , 25.5],
[26.5, 27.5, 31. ]])
缺失值处理方式:
如果数组具有缺失值,则对应维度也会被设为缺失值;如果想要忽略缺失值进行计算,可以用nan开头的聚合函数:
my_matrix = my_matrix.astype("float") # 更改数组类型,因为np.nan 是特殊的浮点类型
my_matrix[0][0][0] = np.nan # 赋值
my_matrix.max(axis=(1,2))
np.nanmax(my_matrix,axis=(1,2))
>>>
array([nan, 39.])
array([39., 39.])
相关性计算
这是以两个数组变量作为输入的函数,计算它们之间的相关性情况。
**** ——协方差计算
输出结果为一个协方差矩阵,**results[ i ][ j ]**表示第i个变量与第j个变量的协方差。
target1 = np.array([1,3,5,9])
target2 = np.array([1,5,3,-9])
np.cov(target1,target2)
>>>
array([[ 11.66666667, -16.66666667],
[-16.66666667, 38.66666667]])
numpy的cov函数使用的三点:
- 变量矩阵的一行表示一个随机变量;
- bais参数控制计算时除以n-1还是n, True表示除以n,False表示除以n-1;
- 输出结果是一个协方差矩阵, results[i][j]表示第i个随机变量与第j个随机变量的协方差.
**** ——相关系数
相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差,它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。
np.corrcoef([target1,target2])
>>>
array([[ 1. , -0.78470603],
[-0.78470603, 1. ]])
numpy的corrcoef函数使用的两点:
- 变量矩阵的一行表示一个随机变量;
- 输出结果是一个相关系数矩阵, results[i][j]表示第i个随机变量与第j个随机变量的相关系数.
二、逻辑函数
常见逻辑函数包含:
- 比较运算符,
<、>、≤、≥、≠和==
等 - 内置函数,
isnan()、isinf()、all()、any()
等 - 逻辑运算符,
或运算符|、和运算符&以及非运算符~
salary = np.array([[9000,10000],[11000,12000]])
(salary>10000).all(axis=1)
(salary>10000).all(axis=1)
>>>
array([False, True])
array([False, True])
逻辑函数优先级:
- 优先级从高到低:not(“~”)、and(“&”)、or(“|”)
a = np.array([True])
b = np.array([False])
~a | a
~b & b
a | b & b
>>>
array([True])# 说明not优先级高于or
array([False])# 说明not优先级高于and
array([True])# 说明and优先级高于or
逻辑函数可以被广播:
a = np.array([True, False])
b = np.array([True, False])
a | b[:, None] # 广播
>>>
array([[ True, True],
[ True, False]])
三、索引函数
常见索引函数包含:
- ****** ——返回非零数的索引**
- ****** ——返回最大数的索引**
- ****** ——返回最小数的索引**
a = np.array([0,-5,0,1,3,-1])
np.nonzero(a)
a.argmax()
a.argmin()
>>>
(array([1, 3, 4, 5], dtype=int64),)
4
1