NumPy进行统计分析
作者:清木! 发布时间:2023-09-21 00:16:15
1 读/写文件
NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式
1、二进制的文件读写
save函数是以二进制的格式保存数据。 np.save(“…/tmp/save_arr”,arr) load函数是从二进制的文件中读取数据。 np.load(“…/tmp/save_arr.npy”) savez函数可以将多个数组保存到一个文件中。 np.savez(‘…/tmp/savez_arr’,arr1,arr2) 存储时可以省略扩展名,但读取时不能省略扩展名。
# 利用NumPy进行统计分析
# 2.3.1读写文件
# 1、二进制数据存储
# 一个数组存储,用save()方法,后缀是.npy
# 存储时可以省略扩展名,但是读取时不能省略。
import numpy as np
arr = np.arange(25).reshape(5,5)
np.save("F:/test/save_arr",arr) #保存数组
print(arr)
data1 = np.load("F:/test/save_arr.npy") # 读取数据
print(data1)
# 2、多个数组存储,使用savez(),后缀是.npz
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.arange(0,1,0.2)
np.savez("F:/test/save_arr2",arr1,arr2) #保存数组
print(arr1)
print(arr2)
data2 = np.load("F:/test/save_arr2.npz")
print(data2['arr_0'])
print(data2['arr_1'])
2、读取文本格式的数据
savetxt函数是将数组写到某种分隔符隔开的文本文件中。 np.savetxt(“…/tmp/arr.txt”, arr, fmt=“%d”, delimiter=“,”) loadtxt函数执行的是把文件加载到一个二维数组中。 np.loadtxt(“…/tmp/arr.txt”,delimiter=“,”) genfromtxt函数面向的是结构化数组和缺失数据。 np.genfromtxt(“…/tmp/arr.txt”, delimiter = “,”)
# 3、文件存储与读写
arr = np.arange(0, 12, 1).reshape(4, -1)
print(arr)
np.savetxt("F:/test/save_arr.txt", arr, fmt="%d", delimiter=',')
data = np.loadtxt("F:/test/save_arr.txt", delimiter=',')
print(data)
# 使用genfromtxt读取数据
data2 = np.genfromtxt("F:/test/save_arr.txt", delimiter=',')
print(data2)
2 使用数组进行简单统计分析
1、排序
直接排序 sort函数是最常用的排序方法:arr.sort() sort函数也可以指定一个axis参数,使得sort函数可以沿着指定轴对数据集进行排序。axis=1为沿横轴排序; axis=0为沿纵轴排序。 间接排序 argsort函数返回值为重新排序值的下标。 arr.argsort() lexsort函数返回值是按照最后一个传入数据排序的。 np.lexsort((a,b,c))
# 2.3.2 使用函数进行简单的统计分析
# 1、排序
np.random.seed(0) #设置随机种子
arr = np.random.randint(1, 10, size=10)
print(arr)
arr.sort # 直接排序
print(arr)
# 二维数组
np.random.seed(0) #设置随机种子
arr2 = np.random.randint(1,10, size=(3,3))
print(arr2)
arr2.sort(axis=1) # axis=1沿着横轴排序
print(arr2)
arr2.sort(axis=0) # axis=0沿着纵轴排序
print(arr2)
# argsort()排序
np.random.seed(0) #设置随机种子
arr = np.random.randint(1, 10, size=6)
print(arr)
print(arr.argsort()) # argsort()返回的是新数据在原数据序列中的位置
# lexsort()排序
a = np.array([3,2,6,4,5])
b = np.array([50, 30, 40, 20, 10])
c = np.array([400, 300, 600, 100, 200])
d = np.lexsort((a,b,c)) # lexsort()只接收一个参数,即(a,b,c)
# 多个键值排序时是按照最后一个传入数据计算的
print(list(zip(a[d], b[d], c[d])))
2、去重与重复数据
去重: 通过unique函数可以找出数组中的唯一值并返回已排序的结果。 重复: np.tile(A,reps) tile函数主要有两个参数,参数“A”指定重复的数组,参数“reps”指定重复的次数。 numpy.repeat(a, repeats, axis=None) repeat函数主要有三个参数,参数“a”是需要重复的数组元素,参数“repeats”是重复次数,参数“axis”指定沿着哪个轴进行重复,axis = 0表示按行进行元素重复;axis = 1表示按列进行元素重复。 这两个函数的主要区别在于,tile函数是对数组进行重复操作,repeat函数是对数组中的每个元素进行重复操作。
# 2、去重与重复数据
arr = np.array([5,2,3,5,3,2,4,3])
print(arr)
arr = np.unique(arr) # 去重且排序 == sorted(set(arr))
print(arr)
# 使用tile()和repeat()函数实现数据重复
arr = np.arange(5)
print(arr)
print(np.tile(arr,3)) # 重复三次
print(arr.repeat(3)) # 重复三次
3、常用的统计函数
当axis=0时,表示沿着纵轴计算。当axis=1时,表示沿着横轴计算。默认时计算一个总值。
# 3、常用的统计函数
arr = np.arange(1,13,1).reshape(3,4)
print(arr)
print(np.sum(arr)) # 和
print(arr.sum(axis=1)) # 横轴的和
print(arr.sum(axis=0)) # 纵轴的和
print(np.mean(arr)) # 均值
print(arr.mean(axis=1)) # 横轴的均值
print(arr.mean(axis=0)) # 纵轴的均值
print(np.std(arr)) # 标准差
print(np.var(arr)) # 方差
print(np.min(arr)) # 最小值
print(np.max(arr)) # 最大值
print(np.argmin(arr)) # 最小值的索引
print(np.argmax(arr)) # 最大值的索引
print(np.cumsum(arr)) # 累计和
print(np.cumprod(arr)) # 累计积
来源:https://blog.csdn.net/QMU111/article/details/130589947
猜你喜欢
- 本文实例为大家分享了PyQt5实现简易计算器的具体代码,供大家参考,具体内容如下效果图: 界面代码calc_interface.py# -*
- 前言这篇文章主要给大家总结了关于学习Python的新手们容易犯的几个错误,一共四个易犯错误,下面来看看详细的介绍吧。一、i+=1 不等于++
- 本文内容由经典论坛星级会员 lipengadmin 收集整理绝大部分属于转载,有很多还是出自咱们蓝色的经典论坛.*****[第1页目录]**
- 安装MySQL假设你把所有必须的源码或者包都放在了/tmp下。如果你下载的是RPM包的话,那比较简单;如果你下载的是二进制包(你没有rpm程
- 下面介绍下Python import与from import使用,具体内容如下所示:Python程序可以调用一组基本的函数(即内建函数),比
- part 1最近在学习go自带的rpc,看完了一遍想着自己实现一个codec,也就是自定义消息的序列化和反序列化。消息的序列化和反序列化涉及
- 装饰器模式(Decorator Pattern)是什么装饰器模式是一种结构型模式,它允许你在运行时为一个对象动态地添加新的行为,而不影响其原
- 本文研究的主要是Django权限机制的相关内容,具体如下。1. Django权限机制概述权限机制能够约束用户行为,控制页面的显示内容,也能使
- 师父布置的任务,让我写一个服务练练手,搞清楚socket的原理和过程后跑了一个小demo,很有成就感,代码内容也比较清晰易懂,很有教育启发意
- 本文实例讲述了Python实现简单截取中文字符串的方法。分享给大家供大家参考。具体如下:web应用难免会截取字符串的需求,Python中截取
- # 半夜撸代码 正在一顿操作猛如虎的时候,发现删了其中一张表的某条记录,结果发现其他表跟这个字段的关联的也都被删除,我已经写了d
- 此代码适合你做网站用,普通朋友可以不用理这个东西!ASP:<%dim objXMLHTTP, qq, pwd qq = &
- 本文实例为大家分享了python实现12306图片验证效果的具体代码,供大家参考,具体内容如下思路:在鼠标点击位置加一个按钮,然后再按钮中的
- 关于英文的写作有一本十分著名的书,The Elements of Style(风格要素),编写程序也有一本The Elements of P
- //定义一个对象数组 var data = [{ name: "jiang", age: 22 }, { name: &
- 推荐算法在互联网行业的应用非常广泛,今日头条、美团点评等都有个性化推荐,推荐算法抽象来讲,是一种对于内容满意度的拟合函数,涉及到用户特征和内
- php中主要用到的就是要用到fread()和fwirte()。而静态页面生成了之后,就会牵扯到修改的问题。这里可以用到正则匹配的方法来替换模
- 这里针对smtplib做了一系列封装,可以完成以下四种场景:发送纯文本的邮件发送html页面的邮件发送带附件文件的邮件发送能展示图片的邮件以
- 可以在Mac OS X 10.2.x(“Jaguar”)和以上版本上Mac OS X使用二进制安装软
- 本文实例为大家分享了用python实现五子棋的具体代码,供大家参考,具体内容如下# 制作一个棋盘"""++++