import numpy as np """ 初始化多维数组,dtype为数据类型,shape为数组形状,ndim表示维度数 np.empty() 快速创建对象,数值没有实际意义 """ z = np.empty([2,3,4]) #print(z) #print(z.dtype,z.shape,z.ndim) """ arrage(x) 表示生成0到x-1的一维整数组, reshape 表示改变数据的维度,物理存储不会改变,仅改变视图 只要乘积相同,可以随意改变形状。 size属性表示数组的大小,元素总和 itemsize 表示数组元素字节数 int为4 float为8 flatten() 表示将数组打平成一维数组 """ x = np.arange(12).reshape(3,4) # print(x) # print(x.size,x.itemsize) # print(x.flatten()) """ 构建ndarray对象 np.array() np.ones() 创建全是1的数组对象 np.zeros() 创建全是0的数组对象 """ x1 = np.array([[1,2],[3,4]]) #print(x1) x2 = np.ones([3,4]) #print(x2) x3 = np.zeros([3,4]) #print(x3) """ 随机数 np.random.seed(n) 记录随机数,便于复现 np.random.randint(low,high,size) 生成low到high之间的随机整数。 np.linspace(0,20,21) 生成等差数列 0到20 生成21个数 np.logspace(1,4,5,base=10) base是底数,1到4为指数,生成5个数 """ np.random.seed(1) r1 = np.random.random([2,3]) #print(r1) np.random.seed(1) r2 = np.random.random([3,3]) #print(r2) r3 = np.random.ranf([2,3]) #print(r3) r4 = np.random.randint(1,10,[3,3]) #print(r4) r5 = np.linspace(0,20,10) #print(r5) r6 = np.logspace(1,4,5,base=10) #print(r6) """ 切片索引 一维数组:x[0:10:2] 根据索引0到9 每隔2个取数 x[::-1] -1表示倒序 二维数组 x[:,0] :表示这个维度全取 x[[0,1],0] 可以选择每个维度取哪几行 s2[np.ix_([0,2],[0,2])] 获取指定行列元素 """ s1 = np.arange(12) #print(x1[0:10:2]) #print(s1[::-1]) s2 = np.arange(12).reshape([3,4]) # print(s2) # print(s2[0,:]) #第一行 # print((s2[:,0])) #第一列 # print(s2[[1,2],0]) #取第2,3行的第一列元素 #print(s2[np.ix_([0,2],[0,2])]) #指定行列的元素 """ 广播 如果相加元素维度不同,自动广播成相对大的维度 np.title() 复制数组。 """ g1 = np.arange(12).reshape([3,4]) #print(g1+10) #每个元素都加10 #print(g1+np.array([[1,2,3,4]])) #每行都加1234 g2 = np.arange(24).reshape(6,4) gg = np.array([[1,2],[3,4]]) gg = np.tile(gg,(3,2)) #行上赋值3次,列上赋值2次 #print(g2+gg) """ 数组堆叠: np.vstack() 垂直方向上堆叠 np.hstack() 水平方向上堆叠 np.stack((x1,x2),axis=0) 不同维度上堆叠 """ a1 = np.arange(6).reshape(2,3) ones1 = np.ones([2,3]) # print(np.vstack([a1,ones1])) # print(np.hstack([a1,ones1])) # print(np.stack([a1,ones1],axis=0)) """ 数组精度 np.around(a) 四舍五入 <=2.5舍 >2.5 入 np.ceil(a) 向上取整 np.floor(a) 向下 取整 """ a = 2.51 #print(np.around(a)) # print(np.ceil(a)) # print(np.floor(a)) """ 基本算数 np.power(x,2,out=x) 做完平方后赋值给x np.sqrt(x) 开平方 x.mean(0) 求每行平均 x.mean(1) 求每列平均 """ suan = np.arange(6).reshape([2,3]) #print(suan) # print(np.power(suan,2)) # print(np.sqrt(suan)) # print(np.power(suan,2,out=suan)) #print(suan.mean(0)) """ 矩阵处理 np.asmatrix(j1) 数组转化成矩阵 np.vdot(x1,x2) 点积运算 """ j1 = np.arange(12).reshape([3,4]) j2 = np.asmatrix(j1) j3 = np.arange(12).reshape([3,4]) j4 = np.asmatrix(j1) print(j1*j3) #数组对应位置相乘 print(j2*j4.T) #矩阵乘法 print(np.vdot(j1,j3))