• numpy入门(2)


     

    一.numpy中常见的数值计算方法

    1.sum()函数,矩阵元素求和

    import numpy as np
    array_test=np.array([[1,2,3],
                         [4,5,6]])
    #1.sum()函数求和
    np.sum(array_test)  #计算出矩阵中所有元素的和
    
    ###指定要操作的是什么轴
    np.sum(array_test,axis=0)  #按横轴求和,即将每一列相加,返回每一列的和
    np.sum(array_test,axis=1)  #按纵轴求和,即将每一行相加,返回每一行的和
    np.sum(array_test,axis=-1)  #按最后一轴进行求和,即按照纵轴求和
    
    ###除了可以使用np.sum()之外,还可以直接使用矩阵调用sum()函数
    array_test.sum()  #等价于np.sum(array_test)
    array_test.sum(axis=0)#等价于np.sum(array_test,axis=0)
    array_test.sum(axis=1)#等价于np.sum(array_test,axis=1)
    View Code

    2.prod(),矩阵元素求积

    import numpy as np
    array_test=np.array([[1,2,3],
                         [4,5,6]])
    
    #prod()函数,对矩阵元素求积
    np.prod(array_test)  #对所有元素求积
    np.prod(array_test,axis=0)  #指定求积的维度
    
    ##同样,prod()函数除了可以使用np.prod()之外,还可以使用array_test.prod()

    3.min(),max()求矩阵的最小值和最大值

    ##min()函数,求矩阵最小值,max()函数,求矩阵最大值其用法和sum函数一致
    import numpy as np
    array_test=np.array([[1,2,3],
                         [4,5,6]])
    
    array_test.min()
    array_test.min(axis=0)
    array_test.min(axis=1)
    array_test.max()
    array_test.max(axis=0)
    array_test.maxi(axis=1)

    4.argmin(),argmax(),返回矩阵最小值和最大值的索引

    #argmin(),argmax() 返回矩阵最小值最大值的索引,其用法和sum()一致
    import numpy as np
    array_test=np.array([[100,21,345],
                         [4,5,6]])
    array_test.argmin()  #注意多维矩阵是按照行来依次存放的
    array_test.argmin(axis=0)#每一列最小元素的索引
    array_test.argmin(axis=1)#每一行最小元素的索引
    array_test.argmax()
    array_test.argmax(axis=0)
    array_test.argmax(axis=1)

    5.mean(),std(),var() 返回矩阵的均值,标准差和方差

    #mean(),平均值,std(),标准差,var()方差,用法和sum()一样
    import numpy as np
    array_test=np.array([[100,21,345],
                         [4,5,6]])
    array_test.mean()
    array_test.mean(axis=0)
    array_test.mean(axis=1)
    
    array_test.std() array_test.std(axis
    =0) array_test.std(axis=1) array_test.var() array_test.var(axis=0) array_test.var(axis=1)

    6.clip(a,b),将矩阵元素的值限制在a,b之间

    ##clip(a,b)将矩阵的值限制在a,b之间:所有小于a的值全部变成a,所有大于b的值全部变成b
    import numpy as np
    array_test=np.array([[1,2,3],
                         [4,5,6]])
    
    array_test.clip(3,4)

    7.round(),四舍五入

    ##round()四舍五入
    array_test=np.array([[1.222,0.098,32.343],[4.6543,5.8212,2.22333]])
    array_test.round()
    
    ##可以通过decimals参数来指定四舍五入的位数
    array_test.round(decimals=2)  #保留两位小数

     二.numpy中的排序

    array_test=np.array([[9.3,4.5,6.7],
                          [4.2,2.78,9.03]])
    
    #####1.sort()默认按行数进行升序排序,可以通过axis参数指定排序的维度,
    array_test.sort()
    array_test.sort(axis=0)  #按照列数进行排序
    
    ####除了使用array_test.sort(),还可以使用np.sort(array_test,axis=1),用法和sum类型
    
    ###2.np.argsort()返回排好序后的索引矩阵,即排好序后,原矩阵的每一个元素应该在什么位置上
    np.argsort(array_test)  #等价于array_test.argsort()
    #$array_test
    
    
    ###3.searchsorted(array_test,value) 返回将value中的值插入到array_test中应该插入的位置,其中array_test是已经排好序的矩阵
    array_test=np.linspace(0,10,10)  #返回一个矩阵,该矩阵的元素在0到10之间,将0到10的距离分成10分,按照顺序赋给矩阵
    
    values=np.array([2.4,8.7,6,4])
    np.searchsorted(array_test,values)
    
    ###4.lexsort()指定按照某一行或某一列进行排序
    array_test=[[3,2,5],[56,32,89],[34,12,42]]
    #index = np.lexsort([-1*array_test[:,0],array_test[:,2]])
    index=np.lexsort([-1*array_test[:,0],array_test[:,2]])# 第一列降序,第三列升序
    View Code

    三.矩阵形状操作

    ###矩阵形状操作
    import numpy as np
    array_test=np.array([1,2,3,4,5,6,7,8])
    #1.shape查看矩阵的形状
    array_test.shape
    #2.改变矩阵的形状,注意,改变矩阵的形状时必须要保持矩阵元素总数相等,否则会报错
    ###2.1可以通过shape=a,b来将原矩阵变成指定维度的矩阵
    array_test.shape=2,4  #将原来的一维矩阵变成2行四列的二维矩阵。
    ####2.2reshape()函数改变形状
    array_test.reshape(1,8)   ##将矩阵变为一行8列矩阵
    
    #3.给矩阵增加维度newwaxis
    array_test=array_test[:,np.newaxis]  #通过定位来决定新的维度增加在什么位置
    array_test=array_test[:,:,np.newaxis] 
    array_test=array_test[:,np.newaxis,:,np.newaxis]  #可以增加多个维度
    
    
    #4.将矩阵没有用的维度去掉,压缩维度squeeze()
    array_test=array_test.squeeze()
    
    #5.矩阵的转置transpose()和T
    array_test.transpose() 
    array_test.T   #两种操作等价
    
    
    #6.矩阵的连接
    a=np.array([[123,54,63,32],[4233,1345,78,56]])
    b=np.array([[34,12,89,567],[80,78,31,45]])
    ###6.1 concatenate()默认将一个矩阵按行依次拼接到另外一个矩阵,可以通过axis参数指定拼接的维度
    c=np.concatenate((a,b))  #将b矩阵按行拼接到矩阵a的末尾
    c=np.concatenate((a,b),axis=1)  #将矩阵按列拼接
    
    ###6.2vstack(),hsatck()拼接,vstack()等价于按行拼接,hsatck()等价于按列拼接
    c=np.vstack((a,b))
    c=np.hstack((a,b))
    
    #7.矩阵的拉伸,即将多维矩阵拉伸成为一维矩阵 flatten()和ravel(),这两个函数效果相同
    a.flatten()
    a.ravel()
    View Code

     四.生成矩阵的常用方法

    ####生成ndarray矩阵的常用方法
    import numpy as np
    
    #1.np.array()方法将列表转为矩阵
    list=[[1,2,3],[4,5,6]]
    array_test=np.array(list)
    
    #2.使用arange()函数构造矩阵,用法和range()函数相同,区别在于range()函数构造一个list,arange()构造一个矩阵
    array_test=np.arange(10)  #构造一个0-9的矩阵
    array_test=np.arange(20,50)#构造一个值从20到49的矩阵
    array_test=np.arange(20,50,2)#以2作为步长
    array_test=np.arange(20,50,2,dtype=np.float32)  #指定数据类型
    
    
    #3linspace(a,b,c)生成一个有c个元素的矩阵,矩阵元素按照等差数列产生,第一个元素是a,最后一个元素是b
    array_test=np.linspace(1,10,20)
    
    #4 logspace(a,b,c,base=e)生成有c个元素的等比数列,公比是e,第一个元素是e^a,最后一个元素是e^b次方,默认e=10
    array_test=np.logspace(1,10,10,base=2)  #生成2,4,8,16,32,64,128,256,512
    
    #5.meshgrid(X,Y)生成X*Y的网格X作为横轴,Y作为纵轴
    x=np.arange(10)
    y=np.arange(10)
    x,y=np.meshgrid(x,y)   #x是一个10x10的矩阵,每一行即为原来x的值,y是一个10x10的矩阵,每一列即为原来y的值
    
    #6.r_[]生成行向量
    array_test=np.r_[0:10:1]  #生成一个行向量,其值从0开始到9,步长为1
    
    #7.c_[]生成列向量 
    array_test=np.c_[0:10:1]  #生成一个列向量,其值从0到9,步长为1
    
    #8.zeros()生成0矩阵
    array_test=np.zeros(3)  #生成一维0向量,有3个值
    array_test=np.zeros((3,3))  #生成3x3的零矩阵
    
    #9.ones()生成1矩阵
    array_test=np.ones(3) #生成一维1向量,有3个值
    array_test=np.ones((3,3))  #生成3x3的1矩阵
    array_test=np.ones((3,3))*8 #生成3x3的8矩阵
    array_test=np.ones((3,3),dtype=np.float32)  #指定数据类型
    
    #10.empty()生成空矩阵
    array_test=np.empty(6)
    
    #11.fill()用某一特定的值填充矩阵
    array_test.fill(1)
    #12.zeros_like()生成一个与已知矩阵有相同结构的0矩阵,ones_like()生成一个与已知矩阵有相同结构的1矩阵
    array_test1=np.array([[1,2,3],
                         [4,5,6],
                         [7,8,9]])
    array_test=np.zeros_like(array_test1)
    array_test=np.ones_like(array_test1)
    
    #13identity()生成单位矩阵
    array_test=np.identity(6)
    array_test
    View Code

    五.矩阵的常用运算操作

    ####矩阵运算操作
    import numpy as np
    #1.multiply()点乘,即对应位置的元素相乘
    x=np.array([5,5])
    y=np.array([2,3])
    np.multiply(x,y)
    #2.dot()矩阵相乘
    x=np.array([[2,3],[4,5]])
    y=np.array([[6,7],[8,9]])
    np.dot(x,y)
    
    #3.* 对应行的对应位置相乘,点乘
    print(x*y)
    
    #4.== 判断两个矩阵对应位置上的元素是否相等,返回bool矩阵
    x==y
    
    #logical_and()逻辑或,logical_or()逻辑与,logical_not()逻辑非,矩阵对应位置进行逻辑运算,返回bool矩阵
    np.logical_and(x,y) 
    np.logical_or(x,y)
    np.logical_not(x)
    View Code

    六.numpy随机模块

    #1.random.rand()生成0-1之间的随机数
    np.random.rand(3)
    np.random.rand(3,3)
    
    #2.random.randint(a=0,b,size=())生成的矩阵是取值在[a,b)之间的随机整数,矩阵的形状由size参数指定 a参数默认是0,一维时size可以简写
    np.random.randint(10,size=(4,5))
    np.random.randint(2,45,size=(4,5))
    np.random.randint(0,10,3)  #生成三个数,注意,这时参数a不可省略
    
    #3.random.random_sample()生成一个随机数,与random.random()等价
    np.random.random_sample()
    
    #4. random.normal(mu,sigma,n)按照正态分布生成随机数,其中mu是正态分布的均值,sigma是标准差,n是要生成的随机数的个数
    mu=0.1
    sigmal=2
    np.random.normal(mu,sigmal,10)
    
    #set_printoptions(precision=n)设置小数的精度,保留n位小数
    np.set_printoptions(precision=2)
    np.random.normal(mu,sigmal,10)
    
    #5.random.shuffle()洗牌,即打乱数组的顺序,会改变原数组的值
    array_test=np.arange(10)
    np.random.shuffle(array_test)
    
    #random.seed()设置随机种子,设置随机种子后,就会生成固定的随机数
    np.random.seed(100)
    np.random.normal(0.1,0.01,10)
    View Code

    七numpy读取操作

    ###读写txt操作
    import numpy as np
    #1.loadtxt() 读取txt文件的数据,结果会转为为矩阵 
    #data=np.loadtxt('test.txt')
    #data = np.loadtxt('test.txt',delimiter = ',',skiprows = 1,usecols=(0,2,3)) #其中delimiter指定分隔符,skiprows跳过几行,usecols指定使用哪些列
    
    #2.savetxt()将文件保存为txt格式
    #np.savetxt('test.txt',array_test,fmt='%.2f',delimiter = ',') #fmt指定保存数据的格式,delimiter指定分隔符
    
    ###读写array结构数据
    #1.save()将数组保存为ndarry结构的文件
    array_test=np.array([[1,2,3],[4,5,6]])
    np.save('array_test.npy',array_test)
    #2.load()加载ndarry结构数据
    test=np.load('array_test.npy')
    
    array_test=np.array([1,2,3,4])
    test=np.array([3,4,5,6])
    #3.将多个array数据打包成一个压缩包
    np.savez('array_test.npz',a=array_test,b=test)#将生成一个压缩包,压缩包里面有a,b两个文件,分别是这两个矩阵的数据
    #加载压缩包
    data=np.load('array_test.npz')  #data是一个字典,key值即为a,b,value值是对应的矩阵数据
    data.keys()  #即a,b
    data['a']
    data['b']
    View Code
  • 相关阅读:
    20180404
    20180323
    20180315
    mongodb
    linux 集群 读写分离 session入库 负载均衡 配置
    linux 搭建配置 lnmp搭建
    有语义标签
    CSS标签属性
    使用QQ登录商城
    ajax 跨域
  • 原文地址:https://www.cnblogs.com/jiachuantang/p/8951780.html
Copyright © 2020-2023  润新知