用一维数组统计五个人的成绩中的最大值最小值平均值_D03 Numpy排序、筛选、统计...


title: D03|Numpy排序、筛选、统计
author: Adolph Lee
categories: 数据挖掘基础
tags:

  • Python
  • 数据挖掘基础
  • 统计
  • 筛选
  • 排序

b12c0306b91fa4bd0bad6a1189eeaae2.png

在进行数据挖掘工作之前,我们常常需要对数据的全貌今昔概览,利用描述性统计获取数据的特征,例如数据的均值,中位数,众数,离中趋势,频数分析,分布分析以及绘制对应的图表。在生活中最为常见的数据存放形式是二维表,我们将二维表数据转换为ndarray之后对应的即为二维数组,下面以二维数组为例,讲述numpy的排序、筛选、统计。

排序

关于排序,numpy的开发者们一早就为我们准备好了方法函数供我们使用,并且提供了多种不同的排序算法例如最常用的quicksort以及稳定性最强的mergesort。

numpy.sort

  •   numpy.sort(a, axis, kind, order)
  •   a ⇒array指的是需要排序的数组
  •   axis ⇒ axis指定按行序排序或按列序排序 axis=0 列序, axis=1 行序 默认为行序
  •   kind ⇒ 排序算法的种类,例如:kind = ‘mergesort’ 默认值为quicksort
  •   order ⇒ 如果数组包含字段名称,那么就可以利用order指定字段

import numpy as nparray_2d = np.array([[1,3,2],[7,4,5],[5,7,9],[5,8,8]])print(array_2d)# 按行序排序print(np.sort(array_2d))print(array_2d)# 按列序排序print(np.sort(array_2d,axis=0))

975325f0f943c4fbfb1f92b2b8818475.png

在演示按字段排序之前,我们先学习为ndarray添加字段名称

  •   利用数据类型对象(dtype)定义字段名称及字段类型
  •   这一过程就像在数据库中建表

import numpy as npfiled = np.dtype([('name','S20'),('age',int)]) # 注意使用小括号 而非中括号array_2d = np.array([('Tyrone',22),('Arya',18),('Jon',36)],dtype=filed)print(array_2d)# 按字段排序print(np.sort(array_2d,order='name'))

66bc04b1f478484290f73838fb488e16.png

筛选

numpy提供了两个筛选方法一个是where 一个是extract,where返回的符合条件元素所在的索引,extract返回的是符合条件元素本身,二则之间的异同,让我们用实际输出结果来比较。

where(condition)

  •   where 返回符合条件元素所在索引
  •   condition ⇒ 筛选条件

import numpy as nparray_2d = np.arange(0,10).reshape(2,5)where_condition = np.where(array_2d > 5)print(where_condition)# 通过索引获取元素print(array_2d[where_condition])

2fd4e316c40ac2debc360277da3474be.png

extarct(condition,array)

  •   extarct 返回符合条件元素所在索引
  •   condition ⇒ 筛选条件
  •   array 指定数组
  •   返回一维数组
import numpy as nparray_2d = np.arange(0,10).reshape(2,5)extarct_condition = np.extract(array_2d>5,array_2d)print(extarct_condition)
701f02a27d22ebdfad3dfe06bbeed702.png

以上内容即为有关numpy的排序与筛选,学习好这一部分的知识,有助于我们更加便捷的理解,另一个数据科学库pandas,pandas是基于numpy所开发的,下面进入numpy章节的最后一个部分,numpy的描述性统计。 ​

统计

numpy中的统计函数都是相当便捷与简单的,例如获取最大最小值获取中位数,均值,加劝均值,分位数,方差标准差等,下面我们将一一介绍。

  •   amax ⇒ 获取最大值
  •   amin ⇒ 获取最小值
  •   ptp ⇒ 获取最大值最小值之差
  •   percentile ⇒ 获取分位数,percentile有三个参数(a,q,axis) a⇒指定数组,q⇒指定百分数(0-100),axis⇒指定行序列序
  •   median ⇒ 获取中位数
  •   mean ⇒ 获取均值
  •   average ⇒ 获取加权平均值
  •   std ⇒ 获取标准差 标准差计算公式:std = sqrt(mean((x-x.mean)**2))
  •   var ⇒ 获取方差 方差计算公式:var = std**2

import numpy as nparray_1d = np.arange(0,10)print(array_1d)# 获取最大值print(np.amax(array_1d))# 获取最小值print(np.amin(array_1d))# 获取最大值最小值之差print(np.ptp(array_1d))# 获取上下四分位数print(np.percentile(array_1d,75),np.percentile(array_1d,25))# 获取中位数print(np.median(array_1d))# 获取均值print(np.mean(array_1d))# 获取加权平均值print(np.average(array_1d))# 获取标准差print(np.std(array_1d))# 获取方差print(np.var(array_1d))

eacbd71f328d58967cba310915098dc0.png

至此,Numpy的介绍的就结束了,不难看出利用numpy操作二维数组还是多有不便,想要操作其如同数据库或者Excel表格一样方便,还比较困难,而基于numpy开发的pandas库的出现解决了这一问题。下一章节我们将开始认识pandas。

转载请注明出处

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值