一、计算函数

计算函数包括:
  1. max() ——最大值
  2. min()——最小值
  3. mean() ——平均值
  4. median() ——中位数
  5. std() ——标准差
  6. var()——方差
  7. sum() ——求和
  8. 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函数使用的三点:

  1. 变量矩阵的一行表示一个随机变量;
  2. bais参数控制计算时除以n-1还是n, True表示除以n,False表示除以n-1;
  3. 输出结果是一个协方差矩阵, results[i][j]表示第i个随机变量与第j个随机变量的协方差.

**** ——相关系数

相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差,它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。

np.corrcoef([target1,target2])

>>>
array([[ 1.        , -0.78470603],
       [-0.78470603,  1.        ]])

numpy的corrcoef函数使用的两点:

  1. 变量矩阵的一行表示一个随机变量;
  2. 输出结果是一个相关系数矩阵, results[i][j]表示第i个随机变量与第j个随机变量的相关系数.

二、逻辑函数

常见逻辑函数包含:

  1. 比较运算符,<、>、≤、≥、≠和==
  2. 内置函数,isnan()、isinf()、all()、any()
  3. 逻辑运算符,或运算符|、和运算符&以及非运算符~
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]])

三、索引函数

常见索引函数包含:

  1. ****** ——返回非零数的索引**
  2. ****** ——返回最大数的索引**
  3. ****** ——返回最小数的索引**
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