import numpy as np
一、创建数组
像python原生一样创建数组
array = np.array([i for i in range(10)]) Out: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
全零数组
np.zeros(10,dtype=int) Out: array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
全1数组
np.ones(10,dtype=int) Out:array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
指定值数组
np.full(10,23,dtype=float) Out:array([23., 23., 23., 23., 23., 23., 23., 23., 23., 23.])
二,创建矩阵
全零矩阵
np.zeros(shape=(3,5),dtype=float) Out:array([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]])
全1矩阵
np.ones(shape=(3,5),dtype=int) Out:array([[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]])
指定值矩阵
np.full(shape=(3,5), fill_value=123, dtype=int) Out:array([[123, 123, 123, 123, 123], [123, 123, 123, 123, 123], [123, 123, 123, 123, 123]])
三,其它函数
np.arange中的步长可以传小数 np.arange(1,10,0.9) Out:array([1. , 1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1])
np.linspace中第三个参数等长的接出几个数,间距是相等的,终止点是包含在内的 np.linspace(1,20,10) Out:array([ 1. , 3.11111111, 5.22222222, 7.33333333, 9.44444444, 11.55555556, 13.66666667, 15.77777778, 17.88888889, 20. ])
在0-10之间随机一个数
np.random.randint(0,10)
随机一个向量
np.random.randint(0,10,size=8)
随机一个矩阵
np.random.randint(0,10,size=(3,5))
添加随机种子,可方便在使用相同随机数调试数据
np.random.seed(1) np.random.randint(0,10,size=(3,5))
浮点随机数
np.random.random(1) array([0.20445225])
浮点随机矩阵
np.random.random(size=(3,5)) Out:array([[0.87811744, 0.02738759, 0.67046751, 0.4173048 , 0.55868983], [0.14038694, 0.19810149, 0.80074457, 0.96826158, 0.31342418], [0.69232262, 0.87638915, 0.89460666, 0.08504421, 0.03905478]])
随机正太分布浮点数
np.random.normal() Out:0.04221374671559283
np.random.normal(10 ,100) # 提定均值和方差 Out:68.28152137158222
np.random.normal(loc=0.0, scale=1.0, size=(3,5)) # 指定size可创建矩阵 Out:array([[-1.10061918, 1.14472371, 0.90159072, 0.50249434, 0.90085595], [-0.68372786, -0.12289023, -0.93576943, -0.26788808, 0.53035547], [-0.69166075, -0.39675353, -0.6871727 , -0.84520564, -0.67124613]])
reshape改变或转换向量为二维数,不能整除列数会报错 array = np.arange(15) array.reshape(3,5) x.reshape(-1,10) # 一行10列 x.reshape(5,-1) # 两行5列 -1为会自动计算
四,基本操作
array = np.arange(15).reshape(3,5) array.ndim # 查看是几维数组 array.shape # 查看数组形状 array.size # 元素个数 array[2,3] # 第2行3列的值,python中的切片语法也可应用到numpy中 array[:2,:3] #取前两行的前三列,返回一个矩阵 注:[2,3] 2代表行的操作,3代表对列表操作 array[:, 0] #取第一列,返回一个向量 subX = X[:2,:3].copy() #考虑效率问题numpy创建后是一个引用,用copy可以让子矩阵和父矩阵脱离关系
五,分割操作
np.concatenate拼接数组,矩阵也可拼接 但只能处理维度一样的情况 x = np.array([1,2,3]) y = np.array([4,5,6]) np.concatenate([x,y,....可有多个], axis=1) #axis默认为0,可改变拼接方向
np.vstack可以直接在 垂直方向 拼接维度不一样的情况 np.vstack([x,Y])
np.hstack可以直接在 水平方向 拼接维度不一样的情况 np.hstack([x,Y])
split分割,split同样也可以分割矩阵 x1,x2,x3 = np.split(z,[3,5]) # 返回3端数据:1为0-2,2为3-4,3为5-9
vsplit横向分割
cy = np.arange(16).reshape(4,4) up,dm = np.vsplit(cy,[2])
hsplit纵向分割
le,rh = np.hsplit(cy,[-1]) #将最后一列和前面的列分隔