目录
一、前言
NumPy是Python的一个开源数值计算扩展,特别擅长存储和处理大型矩阵。与Python自身的嵌套列表结构相比,NumPy提供了更高的计算效率。嵌套列表也可以表示矩阵,但NumPy的设计使其在处理大型矩阵时更为高效。NumPy不仅在矩阵存储方面表现出色,还在计算效率上有着显著的优势。在NumPy中,除了可以使用通用函数对数组进行比较、逻辑等运算之外,还可以使用统计函数对数组进行排序、去重、求最大和最小值以及求均值等统计分析。在Python中,您可以使用import
语句来导入NumPy库,import numpy as np
二、使用函数进行简单的统计分析
在NumPy中,除了可以使用通用函数对数组进行比较、逻辑等运算之外,还可以使用统计函数对数组进行排序、去重、求最大和最小值以及求均值等统计分析。
函数 | 排序方式 |
sort() | 直接排序 |
argsort() | 间接排序 |
lexsort() | 间接排序 |
1.排序
NumPy的排序方式主要可以概括为直接排序和间接排序两种。 直接排序指对数值直接进行排序;间接排序是指根据一个或多个键对数据集进行排序。 在NumPy中,直接排序通常是使用sort函数,间接排序通常是使用argsort函数和lexsort函数。如下图所示为sort函数进行排序:
import numpy as np #导入numpy
np.random.seed(42)#设置随机种子
arr=np.random.randint(1,10,size=10)#生成随机数数组
print(arr)
[7 4 8 5 7 3 7 8 5 4]
arr.sort()#直接排序
print(arr)
np.random.seed(42)
arr1=np.random.randint(1,10,size=(3,3))
print(arr1)
也可以设置行数和列数让数字飞起来
sort函数是较为常用的排序方法,无返回值。如果目标函数是一个视图,那么原始数据将会被修改。 当使用sort函数排序时,用户可以指定一个axis参数,使得sort函数可以沿着指定轴对数据集进行排序。 使用argsort函数和lexsort函数,可以在给定一个或多个键时,得到一个由整数构成的索引数组,索引值表示数据在新的序列中的位置。 lexsort函数可以一次性对满足多个键的数组执行间接排序。
2.去重与重复数据
在统计分析的工作中,难免会出现“脏”数据的情况。重复数据就是“脏”数据的情况之一。 如果一个一个地手动删除,那么将会耗时费力且效率低。 在NumPy中,可以通过unique函数查找出数组中的唯一值并返回已排序的结果。 另一种情况,在统计分析中也经常遇到,即需要将一个数据重复若干次。 在NumPy中主要使用tile函数和repeat函数实现数据重复。
names=np.array(['小米','雄安','笑话','小米','笑话','小喇','小白'])
print(names)
print(np.unique(names))
ints=np.array([1,2,3,4,5,6,7,7,8,8,9,10])
print(ints)
print(np.unique(ints))
上下皆为去重的结果和过程,
np.random.seed(42)
arr=np.random.randint(0,10,size=(3,3))
print(arr)
print('重复后的宿舍组',arr.repeat(2,axis=0))
print('重复后的宿舍组',arr.repeat(2,axis=1))
相关函数还有repeat函数和tile函数
repeat函数的基本使用格式如下:numpy.tile(A, reps)
repeat函数主要有3个参数。 参数a接收array_like,表示输入的数组。 参数repeats接收int或整数的数组,表示每个元素的重复次数。 参数axis接收int,表示用于指定沿着哪个轴进行重复。 tile函数和repeat函数的主要区别在于,tile函数是对数组进行重复操作,repeat函数是对数组中的每个元素进行重复操作。
ile函数的基本使用格式如下:numpy.tile(A, reps)
tile函数主要有两个参数。 参数A接收array_like,表示输入的数组。 参数reps接收array_like,表示指定数组的重复次数。
3.常用的统计函数
函数 说明
np.sum 数组的和
np.sum(arr,axis = 0) 数组纵轴的和
np.sum(arr,axis = 1) 数组横轴的和
np.mean 数组的均值
np.mean(arr,axis = 1) 数组横轴的均值
np.std 数组的标准差
np.std(arr,axis = 1) 数组横轴的标准差
在NumPy中,有许多可以用于统计分析的函数。 常见的统计函数有sum、mean、std、var、min和max等。 几乎所有的统计函数在针对二维数组计算的时候都需要注意轴的概念。 当axis参数为0时,表示沿着纵轴进行计算;当axis为1时,表示沿着横轴进行计算。 默认情况下,函数并不按照任一轴向计算,而是计算一个总值。 聚合计算将直接显示计算的最终结果,在NumPy中,cumsum函数和cumprod函数采用不聚合计算,产生一个由中间结果组成的数组。
arr=np.arange(20).reshape(4,5)
print(np.sum(arr))#计算数据的和
print(arr.sum(axis=0))#纵轴求和
print(arr.sum(axis=1))#横轴求和
print(np.mean(arr))#计算数组均值
print(arr.mean(axis=0))#纵轴求均值
print(arr.mean(axis=1))#横轴求均值
print(np.std(arr))#计算数组标准差
print(np.var(arr))#计算数组方差
print(np.min(arr))#计算数组最小值
print(np.max(arr))#计算数组最大值
print(np.argmin(arr))#返回数组最小元素索引
print(np.argmax(arr))#返回数组最大元素索引
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 33.25 0 19 0 19
此为代码运行结果
三、总结
本文主要介绍了NumPy数组对象ndarray的创建、生成随机数的方法、数组的索引和数组形态的变换方法。 同时还介绍了矩阵的创建方法、使用通用函数对数组进行计算。 最后介绍了利用NumPy读写文件以及进行统计分析的常用函数,为后面真正进入数据分析课程内容的学习和学习其他数据分析库(如pandas)打下坚实的基础。
相关的实训、课程视频等资源: https://edu.tipdm.org
相关的培训动态: http://www.tipdm.com/pxdt/index.jhtml
(如有侵权请联系本人)
参考文献:【numpy数据统计与分析】-csdn博客