NumPy 中的数据统计分析

NumPy 中的数据统计分析,第1张

NumPy的排序方法有直接排序和间接排序。直接排序是对数据直接进行排序,间接排序是指根据一个或多个键值对数据集进行排序。直接排序使用 sort()函数,间接排序使用 argsort函数和lexsort函数。

sort函数是常用的排序方法樱念,函数调用改变原始数组,无返回值。

格式:numpy.sort(a, axis, kind, order)

参数:

a : 要排序的数组

axis: 使得sort函数可以沿着指定轴对数据集进行排序。axis=1 为沿横轴排序,axis=0为沿纵轴排序,axis=None将数组平坦化后进行排序。

kind: 排序算法,默认 quicksort

order: 如果数组包含字段,则是要排序的字段

a = np.array([7, 9, 5, 2, 9, 4, 3, 1, 4, 3])

print('原数组:', a)

a.sort()

print("排序后: ", a)

输出:

原数组: [7 9 5 2 9 4 3 1 4 3]

排序后:  [1 2 3 3 4 4 5 7 9 9]

带参数轴的排序

a = np.array([[4, 2, 9, 5], [6, 4, 8, 3], [1, 6, 2, 4]])

print("原数组:", a)

a.sort(axis=1)

print("排序后: ", a)

输出:

原数组: [[4 2 9 5]

[6 4 8 3]

[1 6 2 4]]

排序后:  [[2 4 5 9]

[3 4 6 8]

[1 2 4 6]]

使用argsort, lexsort函数,可以在给定一个或多个键时,得到一个由厅尺整数构成的索引数组,索引值表示数据在新脊伏困序列中的位置。

a = np.array([7, 9, 5, 2, 8, 4, 3, 1, 4, 3])

print("原数组:", a)

print("排序后: ", a.argsort())

# 返回数组下标排序

print('显示较大的5个数:', a[a.argsort()][-5:])

输出:

原数组: [7 9 5 2 8 4 3 1 4 3]

排序后:  [7 3 6 9 5 8 2 0 4 1]

显示较大的5个数: [4 5 7 8 9]

a = [1, 5, 7, 2, 3, -2, 4]

b = [9, 5, 2, 0, 6, 8, 7]

ind = np.lexsort((b, a))

print('ind', ind)

tmp = [(a[i], b[i])for iin ind]

print('tmp', tmp)

输出:

ind [5 0 3 4 6 1 2]

tmp [(-2, 8), (1, 9), (2, 0), (3, 6), (4, 7), (5, 5), (7, 2)]

在统计分析中,需要提前将重复数据剔除。可以使用unique函数找到数组中唯一值并返回已排序的结果。参数return_counts设置为True时,可返回每个取值出现的次数。

数组内数据去重

names = np.array(['红色', '蓝色', '蓝色', '白色', '红色', '红色', '蓝色'])

print('原数组:', names)

print('去重后的数组:', np.unique(names))

print('数据出现次数:', np.unique(names, return_counts=True))

输出:

原数组: ['红色' '蓝色' '蓝色' '白色' '红色' '红色' '蓝色']

去重后的数组: ['白色' '红色' '蓝色']

数据出现次数: (array(['白色', '红色', '蓝色'], dtype='<U2'), array([1, 3, 3], dtype=int64))

统计分析时需要把一个数据重复若干次,在NumPy中主要使用tile, repeat函数实现重复数据

numpy.tile(A, reps)

a = np.arange(5)

print('原数组:', a)

w = np.tile(a, 3)

print("重复数据:", w)

输出:

原数组: [0 1 2 3 4]

重复数据: [0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]

numpy.repeat(a, reps, axis=None)

参数:a 是需要重复的数组元素,reps是重复次数, axis只沿着那个轴进行,0 按进行元素重复, 1表按列元素进行重复

a = np.arange(5)

print('原数组:', a)

w = np.tile(a, 3)

print('重复数据处理:\n', w)

a2 = np.array([[1, 2, 3], [4, 5, 6]])

print('重复数据处理1:\n', a2.repeat(2, axis=0))

print('重复数据处理2:\n', a2.repeat(2, axis=1))

输出:

原数组: [0 1 2 3 4]

重复数据处理:

[0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]

重复数据处理1:

[[1 2 3]

[1 2 3]

[4 5 6]

[4 5 6]]

重复数据处理2:

[[1 1 2 2 3 3]

[4 4 5 5 6 6]]

常见有sum, mean, std, var, min, max, 几乎所有的统计函数在针对2维数组时需要注意轴的概念。

axis参数0时,表示沿纵轴,1表示沿横轴

a = np.arange(20).reshape(4, 5)

print('创建的数组:\n', a)

print('数组的和:', np.sum(a))

print('数组纵轴的和: ', np.sum(a, axis=0))

print('数组横轴的和: ', np.sum(a, axis=1))

print('数组的均值: ', np.mean(a))

print('数组纵轴的均值: ', np.mean(a, axis=0))

print('数组横轴的均值 ', np.mean(a, axis=1))

print('数组的标准差: ', np.std(a))

print('数组纵轴的标准差: ', np.std(a, axis=0))

print('数组横轴的标准差: ', np.std(a, axis=1))

输出:

创建的数组:

[[ 0  1  2  3  4]

[ 5  6  7  8  9]

[10 11 12 13 14]

[15 16 17 18 19]]

数组的和: 190

数组纵轴的和:  [30 34 38 42 46]

数组横轴的和:  [10 35 60 85]

数组的均值:  9.5

数组纵轴的均值:  [ 7.5  8.5  9.5 10.5 11.5]

数组横轴的均值  [ 2.  7. 12. 17.]

数组的标准差:  5.766281297335398

数组纵轴的标准差:  [5.59016994 5.59016994 5.59016994 5.59016994 5.59016994]

数组横轴的标准差:  [1.41421356 1.41421356 1.41421356 1.41421356]

NumPy的基础主要包含数组及其索引,数组运算,数组读写以及常用的统计与分析方法。

NumPy是Python科学计算的基础包。它提供了多改如维数组对象、基于数组的各种派生对象(例如,masked Array, 矩阵)。除此之外,还提瞎芦供了各种各样的加快数组 *** 作的例程,包括数学基本计算、逻辑、图形 *** 作、排序、选择、输入输出,离散傅立叶变换、基础线性代数、基础统计 *** 作、随机仿真等等。

NumPy的核心是ndarray对象。一方面,Ndarray对象封装了可以包含相同数据类型的多维数组;另一方面,为获得更好的性能, 在ndarray上的 *** 作都是在编译过的代码上执行的。此外,和Python自身的序列对象相比,两者之间有如下不同:

1. NumPy数组的大小是固定的。Python的List是可以动态增长的。改变NumPy的大小会重新创建一个新的数组并把原来的删掉。

2. NumPy数组中的元素一定是同一类型的。(相应地,每个元素所占的内存大小也是一样的。)磨歼带例外情况是:(不是特别理解:one can have arrays of (Python, including NumPy) objects, thereby allowing for arrays of different sized elements.)

3. NumPy数组支持在大量数据上进行数学计算和其他类型的 *** 作。通常情况下,与Python自带的序列类型相比,NumPy数组上的 *** 作执行更高效,代码量也更少。

4. 越来越多的Python科学计算包都是用到了NumPy的数组;虽然这些库支持Python序列类型的输入,但是内部 *** 作还是要先将其转换为NumPy的数组类型,而且输出通常就是NumPy数组。所以,如果你想要高效地使用这些Python的科学计算包,仅仅知道Python内建的序列类型是不够的,你还需要知道如何使用NumPy数组。

最后,NumPy完全支持面向对象的范式。例如,ndarray是一个类,它拥有许多方法和属性。它的许多方法都映射到了最外层的NumPy命名空间的函数里。这样一来,就可以给程序员更多的自由:程序员可以自由选者是面向对象的方式还是面向过程的方式使用这些接口。

首先谢谢邀请,

python中有的算法还是比较多的?

python之所以火是因为人工智能的发展,人工智能的发展离不开算法!

感觉有本书比较适合你,不过可惜的是这本书没有电子版,只有纸质的。

这本书对于算法从基本的入门到实现,循序渐进的介绍,比如里面就涵盖了数学建模的常用算法。

第 1章 从数学建模到人工智能

1.1 数棚乱学建模1.1.1 数学建模与人工智能1.1.2 数学建模中的常见问题1.2 人工智能下的数学1.2.1 统计量1.2.2 矩阵概念及运算1.2.3 概率论与数理统计1.2.4 高等数学——导数、微分、不定积分、定积分

第2章 Python快速入门

2.1 安装Python2.1.1 Python安装步骤2.1.2 IDE的选择2.2 Python基本 *** 作2.2.1 第 一个小程序2.2.2 注释与格式化输出2.2.3 列表、元组、字典2.2.4 条件语句与循环语句2.2.5 break、continue、pass2.3 Python高级 *** 作2.3.1 lambda2.3.2 map2.3.3 filter

第3章 Python科学计算库NumPy

3.1 NumPy简介与安装3.1.1 NumPy简介3.1.2 NumPy安装3.2 基本 *** 作3.2.1 初识NumPy3.2.2 NumPy数组类型3.2.3 NumPy创建数组3.2.4 索引与切片衡和大3.2.5 矩阵合并与分割3.2.6 矩阵运算与线性代数3.2.7 NumPy的广播机制3.2.8 NumPy统计函数3.2.9 NumPy排序、搜索3.2.10 NumPy数据的保存

第4章 常用科学计算模块快速入门

4.1 Pandas科学计算库4.1.1 初识Pandas4.1.2 Pandas基本 *** 作4.2 Matplotlib可视化图库4.2.1 初识Matplotlib4.2.2 Matplotlib基本 *** 作4.2.3 Matplotlib绘图案例4.3 SciPy科学计算库4.3.1 初识SciPy4.3.2 SciPy基本 *** 作4.3.3 SciPy图像处理案例第5章 Python网络爬虫5.1 爬虫基础5.1.1 初识爬虫5.1.2 网络爬虫的算法5.2 爬虫入门实战5.2.1 调用API5.2.2 爬虫实战5.3 爬虫进阶—高效率爬虫5.3.1 多进程5.3.2 多线程5.3.3 协程5.3.4 小结

第6章 Python数据存储

6.1 关系型数据库MySQL6.1.1 初识MySQL6.1.2 Python *** 作MySQL6.2 NoSQL之MongoDB6.2.1 初识NoSQL6.2.2 Python *** 作MongoDB6.3 本章小结6.3.1 数据库基本理论6.3.2 数据库结合6.3.3 结束语

第7章 Python数据分析

7.1 数据获取7.1.1 从键盘获取数据7.1.2 文件的读取与写入7.1.3 Pandas读写 *** 作7.2 数据分析案例7.2.1 普查数据统计分析案例7.2.2 小结

第8章 自然语言处理

8.1 Jieba分词基础8.1.1 Jieba中文分词8.1.2 Jieba分词的3种模式8.1.3 标注词性与添加定义词8.2 关键词提取8.2.1 TF-IDF关键词提取8.2.2 TextRank关键词提取8.3 word2vec介绍8.3.1 word2vec基础原理简介8.3.2 word2vec训练模型8.3.3 基于gensim的word2vec实战

第9章 从回归分析到算法基础

9.1 回归分析简介9.1.1 “回归”一词的来源9.1.2 回归与相关9.1.3 回归模型的划分与应用9.2 线性回归分析实战9.2.1 线性回归的建立与求解9.2.2 Python求解回归模型案例9.2.3 检验、预测与控制

第10章 从K-Means聚类看算法调参

10.1 K-Means基本概述10.1.1 K-Means简介10.1.2 目标函数10.1.3 算法流程10.1.4 算法优缺点分析10.2 K-Means实战

第11章 从决策树看算法升级

11.1 决策树基本简介11.2 经典算法介绍11.2.1 信息熵11.2.2 信息增益11.2.3 信息增益率11.2.4 基尼系数11.2.5 小结11.3 决策树实战11.3.1 决策树回归11.3.2 决策树的分类咐竖

第12章 从朴素贝叶斯看算法多变 193

12.1 朴素贝叶斯简介12.1.1 认识朴素贝叶斯12.1.2 朴素贝叶斯分类的工作过程12.1.3 朴素贝叶斯算法的优缺点12.2 3种朴素贝叶斯实战

第13章 从推荐系统看算法场景

13.1 推荐系统简介13.1.1 推荐系统的发展13.1.2 协同过滤13.2 基于文本的推荐13.2.1 标签与知识图谱推荐案例13.2.2 小结

第14章 从TensorFlow开启深度学习之旅

14.1 初识TensorFlow14.1.1 什么是TensorFlow14.1.2 安装TensorFlow14.1.3 TensorFlow基本概念与原理14.2 TensorFlow数据结构14.2.1 阶14.2.2 形状14.2.3 数据类型14.3 生成数据十二法14.3.1 生成Tensor14.3.2 生成序列14.3.3 生成随机数14.4 TensorFlow实战

希望对你有帮助!!!

贵在坚持,自己掌握一些,在工作中不断打磨,高薪不是梦!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12342141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存