numpy、scipy、pandas、matplotlib的读书报告

发布时间 2023-12-29 00:58:15作者: 夕照~~

#Numpy

import numpy as np

a=np.array([[1,2,3],[2,3,4]])
a.ndim #秩,即轴的数量或维度的数量
a.shape #数组的维度,对于矩阵,n 行 m 列
a.size #数组元素的总个数,相当于 .shape 中 n*m 的值
a.dtype #数组对象的元素类型
a.itemsize #数组对象中每个元素的大小,以字节为单位
a.flags #数组对象的内存信息
a.real #元素的实部
a.imag #元素的虚部
a.data #包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性

#创建数组

import numpy as np

#empty,创建一个指定形状且未初始化的数组,元素为随机值
np.empty((3,4),dtype=int)
np.empty([3,4],dtype=int)


#numpy.zeros,创建指定大小的数组,数组元素以 0 来填充
np.zeros(5)
np.zeros((5,),dtype=int)
np.zeros([3,4])
np.zeros((3,4))


#numpy.ones创建指定形状的数组,数组元素以 1 来填充
np.ones(5)
np.ones((2,3),dtype=int)


#numpy.linspace创建一个一维数组,数组是一个等差数列构成的
np.linspace(1,10,10) #参数分别是strat,stop,num
np.linspace(10, 20, 5, endpoint = False) #将 endpoint 设为 false,不包含终止值

 

#numpy.logspace 函数用于创建一个于等比数列
np.logspace(1,3,10) #默认底数base=10,可以理解为以10**1开始,10**3结束,样本数量为10的数列
np.logspace(1,10,10,base=2) #可以设置底数base

#示例

import numpy as np

a=[1,2,3]
b=np.array(a)

print(b)
print(type(b))

 #scipy

Scipy是一个高级的科学计算库,它和Numpy联系很密切,Scipy一般都是操控Numpy数组来进行科学计算,Scipy让Python成为了半个MATLAB。Scipy包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,而这些功能都是我们在之后进行数据分析需要的。下面是一些常用的Scipy的子模块。

scipy.cluster:聚类相关

  scipy.fftpack:快速傅里叶变换相关

  scipy.integrate:积分和常微分方程求解相关

  scipy.interpolate:插值相关

  scipy.io:输入输出相关

  scipy.optimize:优化相关

  scipy.signal:信号处理相关

  scipy.sparse:稀疏矩阵相关

  scipy.stats:统计相关

  scipy.ndimage:N维图像处理相关

  scipy.misc:图像处理相关

  scipy.maxentropy:最大熵相关

  scipy.constant:物理和数学常数相关

  scipy.special:特殊函数

  常用Scipy函数

  import scipy as sp

  # 插值模块interpolate

  sp.interpolate.inter1d()#一维插值

  sp.interpolate.inter2d()#二维插值

  sp.interpolate.internd()#n维插值

  插值函数中kind参数:

  ‘nearest’:最近邻插值

  ‘zero’:零阶插值

  ‘linear’:线性插值(一次插值)

  ‘quadratic’:二次插值

  ‘cubic’:三次插值

  数字4,5,6,7为更加高阶的插值方法

  # 统计相关模块stats

  sp.stats.norm.rvs()#标准正态分布

  sp.stats.norm()#估算正态分布的参数

  sp.stats.norm.pdf()#计算对应位置的概率密度

  sp.state.norm.ppf()#找到标准正态分布中概率恰好为一半的点

  sp.stats.expon()#指数分布

  sp.stats.norm.cdf()#累积分布函数

  sp.stats.norm.sf()#残存函数

  sp.stats.norm.isf()#逆残存函数

  sp.stats.t()#t分布

  sp.stats.beta()#beta分布

  sp.stats.gamma()#gamma分布

  sp.stats.hypergeom()#超几何分布

  sp.stats.lognorm()#对数正态分布

  sp.stats.uniform()#均匀分布

  sp.stats.chi2()#卡方分布

  sp.stats.cauchy()#柯西分布

  sp.stats.laplace()#拉普拉斯分布

  sp.stats.rayleigh()#瑞利分布

  sp.stats.randint()#离散均匀分布

  sp.stats.f()#f分布

  sp.stats.binom()#二项分布

  sp.stats.poisson()#泊松分布

  sp.stats.rv_continuous()#自定义连续分布

  sp.stats.rv_discrete()#自定义离散分布

  sp.stats.mode()#计算数据的众数

  sp.stats.skew()#计算数据的偏度

  sp.stats.kurtosis()#计算数据的峰度

  sp.stats.ttest_rel()#配对样本t检验

  sp.stats.ttest_ind()#独立样本t检验

  sp.stats.ttest_1samp()#单样本t检验

  #优化模块optimize

  sp.optimize.leastsq()#函数的最小二乘估计

  sp.optimize.curve_fit()#函数的曲线拟合

  sp.optimize.minimize()#函数的最小值

  sp.optimize.rosen()#Rosenbrock函数(用来测试效果的非凸函数)

  sp.optimize.root()#方程求根

  sp.optimize.dual_annealing()#退火优化方法

  #积分模块

  sympy.init_printing()#初始化Sympy符号变量的显示

  sympy.symbols()#产生Sympy符号变量

  sympy.sqrt()#符号变量开方

  sympy.sin()#符号变量求正弦

  sympy.integrate()#符号变量求积分

  sp.specail.jv()#贝塞尔函数

  sp.intergrate.quad()#利用函数进行数值积分

  sp.integrate.dblquad()#利用函数进行双重数值积分

  sp.integrate.simps()#利用采样点进行数值积分

  sp.integrate.trapz()#利用采用点进行数值积分

  #稀疏矩阵模块

  sp.sparse.coo_matrix()#创建COO类型的稀疏矩阵

  sp.sparse.find()#查找稀疏矩阵中非零值及其坐标

  #线性代数模块

  sp.linalg.inv()#矩阵的逆

  sp.linalg.solve()#线性方程组求解

  sp.linalg.det()#求矩阵的行列式

  sp.linalg.norm()#求矩阵或者向量的范数

  sp.linalg.pinv()#求矩阵的广义逆

  sp.linalg.eig()#矩阵的特征值分解

  sp.linalg.svd()#矩阵的奇异值分解

  #图像处理模块

  sp.ndimage.ndimage.median_filter()#中值滤波

  sp.ndimage.ndimage.guassian_filter()#高斯滤波

  sp.signal.wiener()#维也纳滤波

  sp.ndimage.ndimage.shift()#移动坐标

  sp.ndimage.ndimage.rotate()#旋转坐标

  sp.ndimage.ndimage.zoom()#缩放图片

  sp.miscread()#读取图像

  sp.miscresize()#改变图像尺寸

  sp.miscsave()#保存图像

#示例

 

#导入包
import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt
#生成一组数据
x = np.linspace(0,4,10)
y = np.cos(x**2/3+4)
#使用interp1d函数创建插值函数
f1 = interpolate.interp1d(x,y,kind = 'linear')
f2 = interpolate.interp1d(x,y,kind = 'cubic')
#根据新数据x_new对相应的y插值
x_new = np.linspace(0,4,50)
y_new1 = f1(x_new)
y_new2 = f2(x_new)
#绘图,看二者的区别
plt.plot(x,y,'ko',x_new,y_new1,'r-',x_new,y_new2,'b--')
plt.show()

 

 

 #pandas

panel data analysis(多维数据分析)
pandas 中具有两种基本的数据存储结构,存储一维 values 的 Series 和存储二维 values 的 DataFrame;
Series:
Series 一般由四个部分组成,分别是序列的值 data 、索引 index 、存储类型 dtype 、序列的名字 name 。其中,索引也可以指定它的名字,默认为空
dtype = 'object’类型,代表了一种混合类型
DataFrame :
在 Series 的基础上增加了列索引,一个数据框可以由二维的 data 与行列索引来构造:值 data由一维变成了二维,加了一个参数columns,给出了列名

 #matplotlib

举个例子,在现实中,我们想要画一个图表,首先需要找一个可以画的地方来画,譬如一张纸,一块黑板等,这些承载图像的东西,称之为:figure

然后,你需要画图,以黑板为例子,一个黑板上面可以画多个坐标轴,坐标轴即带有x,y轴 (Axis,即轴) 的区域。这个区域称之为 Axes 。每个坐标轴(Axes)中都可以画多条线(当然也可以画柱状图等数据),这每条线都是一个Line2D(顾名思义,二维线条)对象。

好了,现在,一个 Figure 可以有多个 Axes,每个 Axes 都有两条 Axis轴,每个 Axes 也可以画有多个 Line2D。

对于 Figure,可以设置 背景色,边框粗细,边框颜色等内容。

对于 Line2D,可以设置 线条的粗细,颜色,线上数据点的样式(也就是marker,标记点)等。

对于 Axes,可以绘制数据,设置标题,设置图例等。

对于Axis,每个 Axis 都有刻度(tick),刻度值(ticklabel) 等,并且可以设置主刻度(Major),副刻度等。

#示例

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots() # subplots() 可以创建 figure 以及 Axes
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 在 axes 上画一些数据:(x轴,y轴)
plt.show() # 显示绘制的图表