zoukankan      html  css  js  c++  java
  • Python Numpy 矩阵级基本操作(1)

    NumPy的操作介绍

    import numpy as np #导入numpy包,简写为np
    
    print "Generate 1*10 matrix"
    a=np.arange(1,11)**2 #生成1-10的数组,并且每个元素原地平方
    b=np.arange(1,11)**3
    c=a+b #两个矩阵对应元素相加
    print c
    print c.shape
    
    print "create a 2*10 matrix"
    m=np.array([np.arange(10),np.arange(10)]) #使用array来创建数组(矩阵),在括号内输入维度
    print m
    print m.shape
    
    print "generate zero matrix"
    z1=np.zeros(10,dtype=np.int8) #create zero matrix
    z2=np.zeros([3,4])
    print z1 
    print z2
    
    print "generate empty matrix"
    e=np.empty([2,2]) #create empty matrix
    print e
    
    print "create identity matrix with data type equals int8"
    eye1=np.eye(5,dtype=np.int8) #生成对角线矩阵
    print eye1
    print eye1[0,0] #get element by index
    print eye1[3,4]
    
    print "calculation between two matrix"
    arr1=np.array([[1,2,3],[4,5,6]]) #calculation between two matrix
    arr2=arr1*arr1
    print arr1
    print arr2
    print arr2-arr1
    print arr2/arr1
    print arr2%arr1
    
    print "calculation between a matrix and a number"
    print 1/arr1
    print arr1*0.3
    print arr1+0.08
    print arr1-0.33
    
    print "Test reshape" #reshape不改变原矩阵,resize改变原矩阵
    oriMatrix = np.arange(25)
    resMatrix = oriMatrix.reshape(5,5)
    print oriMatrix
    print resMatrix
    print "Reshape and Resize"
    oriMatrix.resize(5,5)
    print oriMatrix
    
    print "Test diagonal and sum"
    diag = resMatrix.diagonal()#获取对角线元素,组成向量
    sumdiag = sum(diag)#计算向量各元素的和
    print diag
    print sumdiag
    
    print "Get items by multi-index"
    arr3 = np.arange(32).reshape(8,4)
    print arr3
    print arr3[[1,7,3,2],:] #矩阵切片
    print arr3[:,[1,3]]
    
    print "Test Transpose"#矩阵转置
    print arr3.T
    print arr3.transpose()
    
    print "Test Ravel, From (m,n) to (m*n,1)"
    print arr3.ravel()#矩阵展开
    print arr3.flatten()
    
    print "Test stack" #矩阵的组合
    m1 = np.arange(9).reshape(3,3)
    m2 = m1*3
    mh = np.hstack((m1,m2)) #水平
    mv = np.vstack((m1,m2))  #垂直  
    md = np.dstack((m1,m2)) 
    print mh
    print mv
    print md
    
    print "Test split"
    print np.hsplit(mh, 3)
    print np.vsplit(mv,3)
    
    print "Array tools"
    print mh.ndim   #Dimension
    print mh.size   #the number of items
    print mh.itemsize #bytes for every item
    print mh.nbytes #total bytes=size*itemsize
    
  • 相关阅读:
    机器学习算法最深刻的讲解,包含海量数据处理算法
    从海量数据中寻找出topK的最优算法代码
    转载:基于 Hive 的文件格式:RCFile 简介及其应用---推酷
    原创:自定义三叉树(二)--基于搜索推荐系统根据用户搜索频率(热搜)排序
    原创:协同过滤之ALS
    AT2705 Yes or No(组合数学)
    LUOGU P4609 [FJOI2016]建筑师(第一类斯特林数)
    BZOJ 4710: [Jsoi2011]分特产(容斥)
    51nod 1518 稳定多米诺覆盖(容斥+二项式反演+状压dp)
    BZOJ 3944: Sum(杜教筛)
  • 原文地址:https://www.cnblogs.com/rhyswang/p/8156060.html
Copyright © 2011-2022 走看看