索引永远都用中括号
(行,列)
一、Numpy数据结构
1.创建numpy的方法:
(1)np.array()函数,里面可以是生成器、列表、元组、数组
(2)np.arange(10):数组生成器,类似range左闭右开 有步长 切片
(3)二维数组:np.array([[1,2,3],[4,5,6]])
(4)简便生成数组的方法:np.random.rand(10).reshape(2,5)2行5列的数组
(5)生成均匀样本的数组:np.linspace(开始,结束,num=间隔,endpoint=true,restep=False)
endpoint默认是true,右闭;retstep默认是false,true返回元组数据,第一部分是结果第二部分步长
(6)np.zeros()/np.ones():生成元素为0/1的数组 np.zeros((3,5),dtype=np.int64)创建多维
(7)np.zeros_like(ar)/np.ones_like(ar):生成和ar形状一样的元素为0/1的数组
(8)np.eye(5):生成N*N矩阵的对角线为1,其他为0的数组
注意:如果两行数组的个数不同就无法形成二维,而会变成一维数组
2.numpy的方法
ar.ndim:查看轴(几维) ar.shape:行列维度 ar.size:共多少元素 ar.dtype:里面的数值类型 type(ar):ar变量的类型
3.numpy通用函数
(1)数组形状:ar.T转置,一维数组不变,二维数组变化
(2)np.reshape(ar,(2,3)) 或 np.arange(10).reshape(5,2) --都生成新数组
(3)np.resize(ar,(2,3)) 或 np.arange(10).resize(12) --可以元素和数组行列个数不同,但是会顺序排序
(4)数组的复制:.copy()
(5)数组类型转换:ar.astype(np.int64)
(6)数组堆叠
a、列之间的堆叠,条数不变,标签改变np.hstack(ar1,ar2)
b、行之间的堆叠,条数改变,标签不变np.vstack(ar1,ar2)
c、np.stack((ar1,ar2), axis=0行连接/1先把要堆叠的本身变成反向在横向堆叠,列连接)
(7)数组拆分 np.hsplit(ar,2)拆分两列, np.vsplit(ar,2)拆分两行
(8)数组的运算
ar.std()标准差、ar.var()方差、
print(ar.sum(), np.sum(ar,axis=0),np.sum(ar,axis=1))#求和,np.sum(axis=0按列求和 axis=1按行求和)
print(np.sort(np.array([1,2,4,5,2,1])))#排序
4.numpy的索引及切片
(1)一维数组的索引和切片与列表类似
(2)二维数组:ar是个4*4的二维数组
ar[2][3]、ar[2,3]:索引为2行3列的数据 ar[:2,2:]:索引为0,1行2列-最后列的数据 ar[:,-1]:索引为最后列
(3)三维数组:ar = np.arange(12).reshape(3,2,2)#三个2*2的二维数组 ar[2][1][1]第三个二维数组中索引为1行1列的数据
(4)布尔型的索引和切片:以布尔型的矩阵做筛选
ar = np.arange(12).reshape(3,4)
i = np.array([True,False,True]) j = np.array([True,True,False,False])
print(ar[i,:])#或print(ar[i])第一个是行,第二行是列
print(ar[:,j])
print(ar>5,type(ar>5)) 返回布尔型
print(ar[ar>5])#返回数值,pandas不同之处在于为False会填充NaN
(5)数组索引和切片的更改及赋值:与列表类似
5.numpy的随机数
(1)np.random.normal(size=(4,4)) --标准正态分布
(2)np.random.rand(4)生成一维数组(4,4)生成二维数组 --0-1之间的随机浮点数--均匀分布
(3)np.random.randint(low,high,size=n)--生成size个(可以定义多维)随机整数,左闭右开
例:np.random.randint(2,10,size=(2,3))
(4)np.random.randn--0-1之间的正态分布
6.存储数组数据
(1)存成.npy文件:np.save(文件名,数据)
(2)存成文本文件:np.savetxt(文件名,数据,delimiter = ',',fmt='.2f')--需要delimiter参数定义如何分割,fmt格式化
7.读取数组数据
(1)np.load(文件名)
(2)np.loadtxt(文件名,delimiter=',')--识别符
网友评论