美文网首页ERP-BI【完】Numpy学习笔记
【numpy笔记_10】统计运算、排序和搜索

【numpy笔记_10】统计运算、排序和搜索

作者: fakeProgramer | 来源:发表于2023-03-02 19:06 被阅读0次

今天讲一下numpy中一些常规的数据统计功能,以及如何操作数组的排序和搜索。

这些在实际的数据分析场景经中常常用到。


统计操作

还是把常用的方法汇总一个表:

功能 方法 说明
数组求和 object.sum() 计算一个数组的元素之和
求平均数 object.mean() 计算一个数组的元素平均值
求方差 object.var() 计算一个数组的元素方差值
求标准差 object.std() 计算一个数组的元素方差值
求极差 object.ptp() 计算一个数组极大值和极小值之差
求中位数 np.median(a) 计算一个数组的元素中位数
求最大值 object.max() 计算一个数组的元素最大值
求中位数 object.min() 计算一个数组的元素最大值
import numpy as np

arr = np.arange(10)
print('arr数组的和为:', arr.sum())
print('arr数组的平均值为:', arr.mean())
print('arr数组的方差为:', arr.var())
print('arr数组的标准差为:', arr.std())
print('arr数组的极差为:', arr.ptp())
print('arr数组的中位数为:', np.median(a=arr))
# 运算结果:
arr数组的和为: 45
arr数组的平均值为: 4.5
arr数组的方差为: 8.25
arr数组的标准差为: 2.8722813232690143
arr数组的极差为: 9
arr数组的中位数为: 4.5


arr = np.arange(10).reshape((2,5))
print('arr数组:\n', arr)
print('arr数组每列的最大元素为:', arr.max(axis=1))
print('arr数组的最小元素为:', arr.min())
# 运算结果:
arr数组:
 [[0 1 2 3 4]
 [5 6 7 8 9]]
arr数组每列的最大元素为: [4 9]
arr数组的最小元素为: 0
以上的统计方法中还有一些可选参数。

如axis、dtype等通用参数,或不同统计方法特定的可选参数等,用以实现更加精细的计算。

因为理解起来很容易,这里不再展开细讲。感兴趣的可以百度,或查看方法的源代码。

  • pycharm查看某个方法的源码:按住ctrl左键单击该方法。

排序操作

主要介绍两个排序方法:

np.sort(),返回排序后的数组

sort()方法有几个参数了解一下:

  • a=, 指定排序的数组
  • axis=, 指定排序的轴
  • kind=,指定排序的算法
    kind参数选择不同的算法,其速度、复杂度、稳定性等有一定差别。从网上找了个介绍,了解一下即可:
kind参数 速度 最坏复杂度 工作空间 稳定性
kind='quicksort' 1 O(n^2) 0
kind='quicksort' 2 O(n*log(n) 0-(n/2)
kind='quicksort' 3 O(n*log(n) 0
  • order=,指定排序的字段(用于前面讲过的结构化数组)
import numpy as np

arr = np.random.randint(1,50,24).reshape((3,2,4))   # 1-49,随机生成24个元素,构建(3,2,4)数组
sort_arr = np.sort(a=arr, axis=2, kind='mergesort')  # 块、行不变,按列排序
print('arr数组:\n', arr)
print('排序后:\n', sort_arr)
# 运算结果:
arr数组:
 [[[24 40 47 38]
  [37 10 27 11]]

 [[ 7 17  2 26]
  [24 41 42  6]]

 [[32 22  4 37]
  [13 48  7 16]]]
排序后:
 [[[24 38 40 47]
  [10 11 27 37]]

 [[ 2  7 17 26]
  [ 6 24 41 42]]

 [[ 4 22 32 37]
  [ 7 13 16 48]]]

np.argsort(),返回排序后的索引值

import numpy as np

arr = np.random.randint(1,50,12)  # 1-49,随机生成24个元素
sort_arr = np.argsort(a=arr)
print('arr数组:\n', arr)
print('排序后的索引:\n', sort_arr)
print('根据索引查找排序后的数组为:\n', arr[sort_arr])
# 运算结果:
arr数组:
 [48 39 30 41 39 12 33  4 20 15 30 27]
排序后:
 [ 7  5  9  8 11  2 10  6  1  4  3  0]
根据索引查找排序后的数组为:
 [ 4 12 15 20 27 30 30 33 39 39 41 48]

搜索

常用有以下搜索的方法:

功能 方法
查找满足条件的元素的索引坐标 np.argwhere('条件')
查找满足条件的元素的索引值 np.where('条件')
查找非零元素的索引坐标 np.nonzero()
查找最大元素的索引坐标 np.argmax()
import numpy as np

arr = np.arange(12).reshape(3,4)
print('arr数组:\n', arr)
print('满足条件的元素坐标:\n', np.argwhere(arr > 5))   # argwhere返回索引坐标
print('满足条件的元素索引值:\n', np.where(arr > 5))   # where返回索引值。由于是二维的,返回行和列两组索引值,其索引一一对应
print('非零元素的索引值:\n', np.nonzero(arr))
print('数组元素最大值的索引坐标为:\n', np.argmax(arr))   # 把数组摊平后返回索引坐标
print('数组元素最小值的索引坐标为:\n', np.argmin(arr))   # 把数组摊平后返回索引坐标

# 提取数组中满足某个条件的元素的方法:
print('数组中的元素是否大于5:\n', arr > 5)   # 指定一个条件
print('大于5的元素有:\n', arr[arr > 5])   # 提取bool对应的元素值
# 运算结果:
arr数组:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
满足条件的元素坐标:
 [[1 2]
 [1 3]
 [2 0]
 [2 1]
 [2 2]
 [2 3]]
满足条件的元素索引值:
 (array([1, 1, 2, 2, 2, 2], dtype=int64), array([2, 3, 0, 1, 2, 3], dtype=int64))
非零元素的索引值:
 (array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
数组元素最大值的索引坐标为:
 11
数组元素最小值的索引坐标为:
 0
数组中的元素是否大于5:
 [[False False False False]
 [False False  True  True]
 [ True  True  True  True]]
大于5的元素有:
 [ 6  7  8  9 10 11]

相关文章

  • 2019-08-06

    NumPy - 排序、搜索和计数函数 NumPy中提供了各种排序相关功能。 这些排序函数实现不同的排序算法,每个排...

  • 深度学习笔记(1)基本运算

    本笔记会认识一下tensorflow,numpy和matplotlib 1.numpy numpy是一个数学运算库...

  • Numpy介绍5

    Numpy介绍5 排序和索引 .titl()方法复制扩展 求最大值,排序等统计计算会损失数据信息量作为代价,第一个...

  • Pandas的基本功能(四)

    DataFrame和Series之间的算术运算 DataFrame和Series之间的算术运算与NumPy数组运算...

  • NumPy中的聚合运算

    在向量上进行聚合运算 Python中的sum() 和 NumPy中的numpy.sum() sum()和numpy...

  • Numpy 常用函数

    Numpy用法速查手册 基本函数: 统计函数: 集合函数: 矩阵运算相关函数: 随机数函数:np.random ...

  • Python 科学应用库 numpy(1)

    numpy 和 pandas 在科学运算比较重要的库 numpy 和 pandas ,如果要用 python 进行...

  • numpy运算

    numpy的与运算 numpy 中 argsort() numpy 中的布尔索引

  • numpy中的运算符重载

    下面统计了numpy中的运算符重载及其功能。 + =np.add()功能:对位相加 * 同样可用于yinshi类型...

  • Numpy入门

    1、熟悉 numpy 的基础属性 2、numpy 创建 array 3、numpy的基础运算 4、numpy索引 ...

网友评论

    本文标题:【numpy笔记_10】统计运算、排序和搜索

    本文链接:https://www.haomeiwen.com/subject/vcnjldtx.html