zoukankan      html  css  js  c++  java
  • Python——numpy模块

    import numpy as np
    #------------------------------------------------------------------------numpy的常用方法-----------------------------------------------------------
    #----------------------------------numpy创建矩阵----------------------------------------------------------------------
    #---np.array()---将括号内的列表(或元祖)转化为矩阵
    a = np.array([[11,2,33],
                  [22,3,44]],dtype = np.int)   #dtype定义数据是以浮点型(float) 还是整形(int) 形式存在
    
    
    a = np.zeros((3,4))     #生成一个3行4列的矩阵,内部元素都为0
    a = np.ones((3,4))      #生成一个3行4列的矩阵,内部元素都为1
                            #除此之外,还有empty,arrange(生成一个有序数列,如np.arrange(10,20,2):生成一维矩阵,内部元素为10—20之间步长为2的数)
    a = np.arrange(12).reshape((3,4))   #生成一个3行4列的元素为1—12的矩阵————即可用reshape进行矩阵行列数的更改操作
    a = np.linspace(1,10,6)     #生成一个一维矩阵,元素为1—10之间均匀分布6个数
    print(a)
    
    #------------------------------------------------numpy的基础运算--------------------------------------------------------
    a = np.array([10,20,30,40])
    b = np.arange(4)
    
    #----------------------矩阵的加法------------------
    c = a-b
    print(c)
    
    #------------------------------------------矩阵的乘法-------------------------------------------------------------------
    c = 10*np.sin(a)    #此公式表示将a 的各个元素取sin值再乘10
    print(c)
    
    a = np.array([[1,1],
                 [0,1]])
    
    #---reshape---设置矩阵的行和列---
    b = np.arange(4).reshape((2,2))
    
    c = a*b         #两个矩阵元素逐个相乘
    
    #---np.dot()---矩阵运算的相乘  此公式也可写为 c_dot = a.dot(b)
    c_dot = np.dot(a,b)
    print(c)
    print(c_dot)
    #-----对矩阵内的元素进行判断---返回True或False
    print(b<3)  #判断矩阵中哪些元素小于3
    
    #-----numpy中的一些内置运算方法---
    a = np.random.random((2,4))   #生成一个2行4列的矩阵,元素为0—1之间的随机数(random.random()用于生成0~1之间的浮点数,不包含0和1)
    print(a)
    #---np.sum()---矩阵元素的和---
    print(np.sum(a,axis = 1))       #返回a矩阵每一列的和,即可通过axis = 1 & 0 来设置求矩阵每一列或每一行的和
    #---np.min()---以矩阵的形式返回矩阵元素中的最小值---
    print(np.min(a,axis = 0))       #返回矩阵中每一列的最小值
    #---np.max()---以矩阵的形式返回矩阵元素中的最大值---
    print(np.max(a,axis = 1))
    
    
    A = np.arange(2,14).reshape((3,4))  #构造一个3行4列,元素为2—14的矩阵
    print(A)
    #----np.argmin---返回矩阵中元素的最小值的索引---
    print(np.argmin(A))
    #---np.argmax---返回矩阵中元素的最大值的索引---
    
    #---np.avra()---返回矩阵元素的平均值---
    print(np.mean(A))   #或者 np.average(A)
    print(A.mean())     #或者 A.average()
    
    #---np.median()---返回矩阵元素的中位数---
    
    #---np.cumsum()---返回矩阵元素的累加值---
    print(np.cumsum(A))
    
    #---np.diff()---返回矩阵元素的累差值---
    
    #---np.sort()---对矩阵逐行(只在行内操作)进行排序---
    
    #---np.transpose()---&---A.T---对矩阵进行转置---
    
    #---np.clip()---传入最大值和最小值,矩阵中大于最大值的设置为最大值,小于最小值的等于最小值,其余元素保持不变---
    
    #-----------------------------对矩阵元素进行索引-------------------------------------------------------------------------------
    #---通过索引获取array的值---
    A = np.arrange(3,15)
    print(A[3])     #一维返回的十一个元素,多维返回的是某一行
    A.reshap((3,4))
    print(A[1][1])  #返回第一行第一列的元素,或者A[1,1]
    print(A[2,:])   #返回第二行的所有数
    print(A[:,1])   #返回第一列的所有数
    print(A[1,1:4]) #返回第一行第一到第四个元素
    
    #---for循环默认迭代行---
    for row in A:
        print(row)    #将A按行打印
    
    for column in A.T:
        print(column)    #通过对A矩阵转置实现随矩阵行的转置
    
    for item in A.flat:
        print(item)     #通过 .flat 将矩阵转化为一维从而实现对矩阵每一个元素进行迭代
    
    #-------------------------------矩阵的合并-------------------------------------------------------------------------------
    #--------np.vstack()---纵向合并-------
    A = ([1,1,1])
    B = ([2,2,2])
    print(type(A))
    print(np.vstack((A,B)))
    
    #-------np.hstack()----横向合并-----
    print(np.hstack((A,B)))
    
    #----np.newaxis将A变成一个纵向的矩阵---
    print(A[:,np.newaxis])  #给序列A加一个纵向的维度  , A[np.newaxis,:] 给序列A加一个横向的维度
    
    #---np.concatenate()------多个矩阵的横向或纵向合并---
    C = np.concatenate((A,B,B,A),axis = 0)      #多个矩阵的纵向合并
    print(C)
    
    #---------------------------------矩阵的分割----------------------------------------------------------------------------------
    A = np.arange(12).reshape((3,4))
    
    #---np.split()----将矩阵进行横向或纵向分割------此方法只能进行等距分割----
    B = np.split(A,2,axis = 0)      #将矩阵A纵向分割为两部分,可通过设置axis = 1 设置横向分割,第二个参数设置分割成为几部分
                                    #矩阵A列数为4 ,若用此方法将将列分为三份,则会报错
    #--------np.arra_split()---可进行不等距的分割
    
    #----------np.vsplit()------对矩阵进行横向分割---
    C = np.vsplit(A,3)
    
    #--------np.hsplit()---------对矩阵进行纵向分割---
    D = np.hsplit(A,2)
    
    
    #---------------------------------矩阵的赋值------------------------------------------------------------------------------------
    A = np.arange(4)
    
    #-----------等号赋值---------
    B = A
    C = A
    D = B
    
    A[0] = 11       #此时B,C,Dd都会跟着改变
    D[1:3] = [22,33]        #此时A,B,C 都会跟着改变
    
    #-------copy()---深度复制---可解除矩阵之间的关联---
    E = A.copy()
    A[0] = 12       #此时E不会跟着改变
  • 相关阅读:
    图论基础
    降维和聚类系列(二):拉普拉斯特征映射Laplacian Eigenmaps,谱聚类,实例代码
    降维和聚类系列(一):方法综述和比较(持续更新中)
    markdown设置图片尺寸
    指示向量indicator vector
    Sherlock and his girlfriend CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    数组分块入门 3
    数组分块入门 3
  • 原文地址:https://www.cnblogs.com/jgua/p/13775606.html
Copyright © 2011-2022 走看看