Numpy 是Python科学计算的基础库,主要提供N维数组的实现,以及数学算法。
1:Numpy 数组的创建和访问:
创建一维数组,二维数组。这里的一维数组类似数学中的向量,二维数组类似数学中的矩阵。
import numpy as np
''' 常见的利用numpy 创建数组的方法'''
print("创建一个5行6列的二维数组")
a1=np.array([[1,2,2,2,3,3],[1,2,2,2,2,2,],[1,2,3,4,5,6],[1,2,3,4,4,5],[1,2,3,4,5,6]]) # .array() 创建数组函数
print(a1)
dim=a1.ndim # 数组.ndim 返回值是维数组的维数 二维数组返回值就是2,
print(dim)
size=a1.shape # 数组.shape 返回数组的大小,即行数和列数 注意返回值的类型为元组
print(size,'\n')
a2=np.arange(5) #.arrange() 创建1维数组 用法类似于range([start,]end[,step])
print(a2,'\n')
a3=np.linspace(0,3,5) #.linspace() 创建1维数组
print(a3,'\n')
a4=np.zeros((3,5)) # .zeros(shape=(row,col)) 创建row*col 的二维数组(零矩阵)
print(a4,'\n')
a5=np.ones((3,3)) # .ones(shape=(row,col)) 创建row*col 的二维数组(单位矩阵)
print(a5,'\n')
a6=np.eye(4) # .eye(num) 创建num*num 的二维数组(对角矩阵,对角线元素为1)
print(a6,'\n')
a7=np.random.randn(5,3) # .random.randn(row,col) 创建row*col 的随机二维数组 这里不再额外的导入 import random
print(a7,'\n')
''' 常见的利用numpy 数组元素访问机制'''
'''熟悉matlab的同学注意,其访问机制与matlab中向量和矩阵的访问机制相似,不同在python用中括号[],且索引从0开始'''
b1=a1[3,4] # 访问形式:数组名[x,y] ,其中x,y 为二维数组行和列的索引,索引值从0开始,一维数组的访问与列表元素的访问机制类似,[索引]和切片形式
b2=a1[:,4] # :表示所有元素
print(b1,'\n',b2,'\n')
2:Numpy 运算:
数组和标量数值之间进行计算,计算过程是数组里的元素和标量逐个计算。
数组的维度变化:数组.reshape(row,col) eg: a=np.random.randint(1,5,20).reshape(4,5) 将1维数组变为4*5的二维数组。
数组.ravel() 将多维数组展开为1维数组
数组和数组之间进行计算,计算过程是:如果数组的维度相同且行数和列数相同,数组里的元素对应位置进行运算计算。注意这里的a*b只是对应元素相乘,并不是矩阵乘法(内积)。矩阵的内积使用 np.dot()
数组的内置函数计算:注意命名空间问题 np.
np.cos(a) np.sqrt(a) #开根号
np.sin(a)
np.exp(a) #e指数
np.sort(a,axis=1) # 排序,axis=1,每行元素的排序 ; axis=0,每列元素的排序
数组的统计方法: a必须为numpy创建的数组,注意下面不在需要np. ,因为这个不是内置函数,而是对象的方法
a.sum() 求和 ,a.mean()求均值 ,a.std()标准差 ,a.min()最小值,a.max()最大值,a.argmin() 返回最小值的索引,a.argmx()
返回最大值的索引
二维或高维数组的统计方法:以行或列来计算 a.sum(axis=0) a.std(axis=0) #按列计算 a.std(axis=1) a.mean(axis=1) #按行计算
Numpy 的常见的高级功能:例如:数据拟合
import numpy as np
points_num=20
equation_order=3
input_x=np.linspace(1,10,points_num) #输入数据
output_y=np.sqrt(input_x)+0.177*np.random.rand(points_num)#输出数据
coffecient=np.polyfit(input_x,output_y,equation_order) #数据拟合,返回值为拟合的equation_order阶多项式系数 列表形式
result=np.poly1d(coffecient) #返回值为拟合后的多项式 一个函数关系
t=np.linspace(1,10,200)
print(result(t))
到此对于Numpy 的一些简单用法就到这里,详细的用法参考Numpy 官网 www.numpy.org
Pandas 是时间序列数据处理工具包,在利用python进行数据分析中也被广泛应用。
'''Pandas的基本数据结构'''
a1=pd.Series([1,2,3,4])
#.Series() 表示创建一行数据,类似创建一个一维数组。 类似numpy。 注意所有的一维数组都是数学中的行向量,并不是列向量。应为是一个列表结构
a2=pd.DataFrame(np.random.randn(3,4),columns=list('ABCD'))
# .DataFrame()表示创建二维数组 columns=list('ABCD')表示的是每一列的名称.
对pandas 创建的数据进行访问 ,注意一下的a2是DataFrame对象
a2.iloc[0] #对第一行元素进行访问
a2.A #对A列元素进行访问
a2.shape() #返回数据的行数和列数
a2.haed(num) #访问前num行数据
a2.tail(num) #访问后num行数据