python数据信息剖析之numpy基本编码展现

# l=[i for i in np.arange(4).reshape(2,2)] # #np.where(condition,x,y)假如标准创立实行x,不然实行y。此外,x和y能够再次写出np.where()的方式组成嵌套循环 # x=[i for i in np.arange(11,20)] # y=[j for j in np.arange(21,30)] # print(l) # print(np.array(l)) # result=np.where(np.linalg.det(l) 0,x,y) # print(result) # print((np.array(l) 0).sum()) # bool=np.array(l) 0 # print(bool) # print(bool.any())#有一个为True则回到True # print(bool.all())#有一个为False则回到False 有关zip涵数的一点表述,zip能够接纳随意多主要参数,随后再次组成成一个tuple目录。 zip([1, 2, 3], [4, 5, 6], [7, 8, 9]) 回到結果:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
unique(x) 测算x中的唯一原素,并回到井然有序結果 intersectld(x,y) 测算x和y中的公共性原素,并回到井然有序結果 unionld(x,y)测算x和y的并集,并回到井然有序結果 inld(x,y)获得一个描述 x的原素是不是包括于y 的布尔运算数字能量数组 setdiffld(x,y) 结合的差,即原素在x中且没有y中 setxorld(x,y) 结合的异或,即存有于一数量组中但不一样时存有于2个数字能量数组中的原素 set_arr=np.array([1,1,2,3,4,5]) print(np.unique(set_arr)) set_arr2=np.unique(set_arr) print(np.intersect1d(set_arr,set_arr2))
np.savez( array_archive.npz ,a=arr,b=arr)#好几个数字能量数组缩小储存 arch=np.load( array_archive.npz ) print(arch[ a ])
线形解析几何 常见的numpy.linalg涵数 diag 以一维数字能量数组的方式回到方阵的对角线(或非对角线原素),或将一维数字能量数组变换为方阵(非对角线原素为0) dot 引流矩阵乘法 trace 测算对角线原素的和 det 测算引流矩阵队伍式 eig 测算方阵的特点值和特点空间向量 inv 测算方阵的逆 pinv 测算引流矩阵的Moore-Penrose伪逆 qr 测算QR溶解 svd 测算奇特值溶解 solve 解线形方程Ax=b,在其中A为一个方阵 lstsq 测算Ax=b的最少二乘解
#数字能量数组的合拼与分拆 concatenate 最一般化的联接,沿一条轴联接一维数字能量数组 [2个数字能量数组联接的axis必须规格型号一致] vstack,row_stack 以朝向行的方法多数组开展层叠(沿轴0) hstack 以朝向行的方法多数组开展层叠(沿轴1) column_stack 相近于hstack,但会先将一维数字能量数组变换为二维列空间向量 dstack 以朝向 深层 的方法多数组开展层叠(沿轴2) split 沿特定轴在特定的部位分拆数字能量数组 hsplit,vsplit,dsplit split的方便快捷化涵数,各自顺着轴0,1,2开展分拆 # r_目标 # c_目标 arr1=np.arange(1,7).reshape((2,3)) arr2=np.arange(7,13).reshape((2,3)) arr3=np.arange(13,28).reshape((5,3)) # print(arr1) # print(arr2) # print(np.concatenate([arr1,arr2],0)) # print(np.concatenate([arr1,arr2],1)) # # print(np.concatenate([arr1,arr3],0)) # #层叠 # print(np.vstack((arr1,arr2)))#竖直层叠 # print(np.hstack((arr1,arr2)))#水准层叠 print(np.split(arr3,[0,1],axis=1)) arr4=np.random.randn(5,5) print(arr4) first,second,third=np.split(arr4,[1,3],axis=0)#在其中[1,3]为下刀的部位 # first,second,third=np.split(arr4,[1,3],axis=1) print(first) print( ) print(second) print( ) print(third) print( ) #层叠輔助类 arr5=np.arange(6).reshape((3,2)) arr6=np.random.randn(3,2) #r_用以按行层叠 print(np.r_[arr5,arr6]) #c_用以按列层叠 print(np.c_[np.r_[arr5,arr6],np.arange(6)]) #切成片立即变为数字能量数组 print(np.c_[1:6,-10:-5]) #原素的反复实际操作 print(arr5.repeat(3))#按原素 print(arr5.repeat([1,2,3,4,5,6]))#按原素,长短要配对 #repeat(n,axis)特定轴 print(arr5.repeat(2,0))#按行 print(arr5.repeat(2,1))#按列 #tile print(np.tile(arr5,(2)))#贴地砖 print(np.tile(arr5,(2,3)))#特定每一个轴的tile频次 #间距引流矩阵测算 #给定mxn阶引流矩阵X,考虑X=[x1,x2,...,xn],这儿第i列空间向量是m维空间向量。 求nxn引流矩阵,促使Dij=||Xi-Xj||^2 X = np.array([range(0, 500), range(500, 1000)]) m, n = X.shape t = time.time() D = np.zeros([n, n]) for i in range(n): for j in range(i + 1, n): D[i, j] = linalg.norm(X[:, i] - X[:, j]) ** 2 D[j, i] = D[i, j] print(time.time() - t) t = time.time() D = np.zeros([n, n]) for i in range(n): for j in range(i + 1, n): d = X[:, i] - X[:, j] D[i, j] = np.dot(d, d) D[j, i] = D[i, j] print(time.time() - t) t = time.time() G = np.dot(X.T, X) D = np.zeros([n, n]) for i in range(n): for j in range(i + 1, n): D[i, j] = G[i, i] - G[i, j] * 2 + G[j,j] D[j, i] = D[i, j] print(time.time() - t) t = time.time() G = np.dot(X.T, X) H = np.tile(np.diag(G), (n, 1)) D = H + H.T - G * 2 print(time.time() - t)