Python数据分析学习笔记:Numpy(三)

统计函数

NumPy 有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。 函数说明如下:

numpy.amin()numpy.amax()这些函数从给定数组中的元素沿指定轴返回最小值和最大值。

示例:

numpy.ptp() 该函数返回沿轴的值的范围(最大值 – 最小值)。

示例:

numpy.percentile() 百分位数是统计中使用的度量,表示小于这个值得观察值占某个百分比。 函数numpy.percentile()接受以下参数。

numpy.percentile(a, q, axis)

其中:

序号参数及描述
1.a 输入数组
2.q 要计算的百分位数,在 0 ~ 100 之间
3.axis 沿着它计算百分位数的轴

示例:

numpy.median() 计算沿指定轴的中位数。

示例:

numpy.mean() 该函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。

示例:

numpy.average() 加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。 numpy.average()函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。

示例:

在多维数组中,可以指定用于计算的轴。

示例:

numpy.std() 标准差,是与均值的偏差的平方的平均值的平方根。 标准差公式如下:std = sqrt(mean((x – x.mean())**2))

numpy.var() 方差,是偏差的平方的平均值,即mean((x – x.mean())** 2)。 换句话说,标准差是方差的平方根。

示例:

排序、搜索和计数函数

NumPy中提供了各种排序相关功能。 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。

种类速度最坏情况工作空间稳定性
‘quicksort’(快速排序)1O(n^2)0
‘mergesort’(归并排序)2O(n*log(n))~n/2
‘heapsort’(堆排序)3O(n*log(n))0

numpy.sort() 该函数返回输入数组的排序副本。 它有以下参数:numpy.sort(a, axis, kind, order)

其中:

序号参数及描述
1.a 要排序的数组
2.axis 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序
3.kind 默认为’quicksort’(快速排序)
4.order 如果数组包含字段,则是要排序的字段

示例:

numpy.argsort() 该函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。 这个索引数组用于构造排序后的数组。

示例:

numpy.lexsort() 该函数使用键序列执行间接排序。键可以看作是电子表格中的一列。该函数返回一个索引数组,使用它可以获得排序数据。 注意,最后一个键恰好是 sort 的主键。

示例:

numpy.argmax()numpy.argmin() 这两个函数分别沿给定轴返回最大和最小元素的索引。

示例:

numpy.nonzero()该函数返回输入数组中非零元素的索引。

示例:

numpy.where() where()函数返回输入数组中满足给定条件的元素的索引。

示例:

numpy.extract() 该函数返回满足任何条件的元素。

示例:

字节交换

我们已经看到,存储在计算机内存中的数据取决于 CPU 使用的架构。 它可以是小端(最小有效位存储在最小地址中)或大端(最小有效字节存储在最大地址中)。

numpy.ndarray.byteswap() 该函数在两个表示(大端、小端)之间切换。

示例:

副本和视图

在执行函数时,其中一些返回输入数组的副本,而另一些返回视图。 当内容物理存储在另一个位置时,称为副本。 另一方面,如果提供了相同内存内容的不同视图,我们将其称为视图。

无复制

简单的赋值不会创建数组对象的副本。 相反,它使用原始数组的相同id()来访问它。 id()返回 Python 对象的通用标识符,类似于 C 中的指针。此外,一个数组的任何变化都反映在另一个数组上。 例如,一个数组的形状改变也会改变另一个数组的形状。

示例:

视图或浅复制

NumPy 拥有ndarray.view()方法,它是一个新的数组对象,并可查看原始数组的相同数据。 与前一种情况不同,新数组的维数更改不会更改原始数据的维数。

示例:

数组的切片也会创建视图:

深复制

ndarray.copy()函数创建一个深层副本。 它是数组及其数据的完整副本,不与原始数组共享。

示例:

矩阵库

NumPy 包包含一个 Matrix库numpy.matlib。此模块的函数返回矩阵而不是返回ndarray对象。

matlib.empty() 该函数返回一个新的矩阵,而不初始化元素。 该函数接受以下参数。numpy.matlib.empty(shape, dtype, order)

其中:

序号参数及描述
1.shape 定义新矩阵形状的整数或整数元组
2.Dtype 可选,输出的数据类型
3.order C 或者 F

示例:

numpy.matlib.zeros() 此函数返回以零填充的矩阵。

numpy.matlib.ones() 此函数返回以一填充的矩阵。

示例:

numpy.matlib.eye() 该函数返回一个矩阵,对角线元素为 1,其他位置为零。 该函数接受以下参数 numpy.matlib.eye(n, M,k, dtype)

其中:

序号参数及描述
1.n 返回矩阵的行数
2.M 返回矩阵的列数,默认为n
3.k 对角线的索引
4.dtype 输出的数据类型

示例:

numpy.matlib.identity() 该函数返回给定大小的单位矩阵。单位矩阵是主对角线元素都为 1 的方阵。

示例:

numpy.matlib.rand() 该函数返回给定大小的填充随机值的矩阵。

示例:

注意,矩阵总是二维的,而ndarray是一个 n 维数组。两个对象都是可互换的。

线性代数

NumPy 包包含numpy.linalg模块,提供线性代数所需的所有功能。 此模块中的一些重要功能如下表所述。

序号函数及描述
1.dot 两个数组的点积
2.vdot 两个向量的点积
3.inner 两个数组的内积
4.matmul 两个数组的矩阵积
5.determinant 数组的行列式
6.solve 求解线性矩阵方程
7.inv 寻找矩阵的乘法逆矩阵

numpy.dot() 此函数返回两个数组的点积。 对于二维向量,其等效于矩阵乘法。 对于一维数组,它是向量的内积。 对于 N 维数组,它是a的最后一个轴上的和与b的倒数第二个轴的乘积。

numpy.vdot() 此函数返回两个向量的点积。 如果第一个参数是复数,那么它的共轭复数会用于计算。 如果参数id是多维数组,它会被展开。

示例:

numpy.inner()此函数返回一维数组的向量内积。对于更高的维度,它返回最后一个轴上的和的乘积。

示例:

numpy.matmul() 该函数返回两个数组的矩阵乘积。虽然它返回二维数组的正常乘积,但如果任一参数的维数大于2,则将其视为存在于最后两个索引的矩阵的栈,并进行相应广播。另一方面,如果任一参数是一维数组,则通过在其维度上附加 1 来将其提升为矩阵,并在乘法之后被去除。

示例:

numpy.linalg.det() 该函数计算输入矩阵的行列式。行列式在线性代数中是非常有用的值。它从方阵的对角元素计算。对于 2×2 矩阵,它是左上和右下元素的乘积与其他两个的乘积的差。换句话说,对于矩阵[[a,b],[c,d]],行列式计算为ad-bc。 较大的方阵被认为是 2×2 矩阵的组合。

示例:

numpy.linalg.inv() 我们使用numpy.linalg.inv()函数来计算矩阵的逆。 矩阵的逆是这样的,如果它乘以原始矩阵,则得到单位矩阵。

示例:

numpy.linalg.solve() 该函数给出了矩阵形式的线性方程的解。

考虑以下线性方程:

  • x + y + z = 6
  • 2y + 5z = -4
  • 2x + 5y – z = 27

可以使用矩阵表示为:

如果矩阵成为A、X和B,方程变为:AX = B 或 X = A^(-1)B

示例:

NumPy – IO

ndarray对象可以保存到磁盘文件并从磁盘文件加载。 可用的 IO 功能有:

  • load()和save()函数处理 numPy 二进制文件(带npy扩展名)
  • loadtxt()和savetxt()函数处理正常的文本文件

NumPy 为ndarray对象引入了一个简单的文件格式。 这个npy文件在磁盘文件中,存储重建ndarray所需的数据、图形、dtype和其他信息,以便正确获取数组,即使该文件在具有不同架构的另一台机器上。

save()和load()函数接受一个附加的布尔参数allow_pickles。 Python 中的pickle用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。

示例:

savetxt()以简单文本文件格式存储和获取数组数据,是通过savetxt()和loadtx()函数完成的。

示例:

参考链接:

微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

Python检验数据是否正态分布

判断数据是否符合正态分布,比如使用3-sigma判断数据异常前,首先需要确定的是数据是否符合正态分布。今天一起

数据探索Pandas-Profiling与Dataprep.…

在使用数据前,我们首先要做的事观察数据,包括查看数据的类型、数据的范围、数据的分布等。Pandas-Profi

开源指标可视化工具Graphite

Graphite 是处理可视化和指标数据的优秀开源工具。它有强大的查询 API 和相当丰富的插件功能设置。事实

发表评论

电子邮件地址不会被公开。 必填项已用*标注