首页 > Python资料 博客日记

python每日学习11:numpy库的用法(下)

2024-08-05 08:00:05Python资料围观51

本篇文章分享python每日学习11:numpy库的用法(下),对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识

python每日学习11:numpy库的用法(下)

  • 数组的拼接

    名方法称说明
    concatenate连接沿现有轴的数组序列
    hstack水平堆叠序列中的数组(列方向)
    vstack竖直堆叠序列中的数组(行方向)
    concatenate函数用于沿指定轴连接相同形状的两个或多个数组,格式:numpy.concatenate((a1, a2, …), axis)
    # 列表的拼接
    a=[1,2,3]
    b=[4,5,6]
    a.extend(b)
    # 一维数组的拼接
    x=np.arange(1,4)
    y=np.arange(4,7)
    print(np.concatenate([x,y]))
    # 二维数组的拼接
    a=np.array([[1,2,3],[4,5,6]])
    b=np.array([['a','b','c'],['d','e','f']])
    print(np.concatenate([a,b]))
    print(np.concatenate([a,b],axis=0))
    print(np.concatenate([a,b],axis=1))
    
    # hstack()、vstack()和dstack()的使用
    # numpy.hstack它通过水平堆叠来生成数组。
    # numpy.vstack 它通过垂直堆叠来生成数组
    # vstack 与hstack的使用
    a=np.arange(1,4)
    b=np.arange(4,7)
    print(np.vstack([a,b]))
    print(np.hstack([a,b]))
    # 三维数组的拼接
    # axis=0可以使用vstack替换
    # axis=1可以使用hstack替换
    # axis=2可以使用dstack替换
    aa=np.arange(1,37).reshape(3,4,3)
    bb=np.arange(101,137).reshape(3,4,3)
    print(np.concatenate((aa,bb),axis=0))#6 4 3
    print(np.concatenate((aa,bb),axis=1)) #3  8  3
    print(np.concatenate((aa,bb),axis=2))#3 4 6
    
  • 数组的转置

    # 数组的转置:将行与列对调,即第一行变成第一列…或第一列变成第一行…的操作即使转置操作。
    # transpose进行转换
    a=np.arange(1,13).reshape(2,6)
    print(a)
    print(a.transpose())
    print(a.T)
    
  • 数组的分隔

    # numpy.split 函数沿特定的轴将数组分割为子数组,格式如下:numpy.split(ary, indices_or_sections, axis)
    # split分隔
    x=np.arange(1,9)
    a=np.split(x,4)
    print(a)
    print(a[0])
    print(a[1])
    print(a[2])
    print(a[3])
    #传递数组进行分隔
    b=np.split(x,[3,5])#左开右闭
    print(b)
    # 水平分隔:使用hsplit函数可以水平分隔数组,该函数有两个参数,第1个参数表示待分隔的数组,第2个参数表示要将数组水平分隔成几个小数组
    # hsplit的使用
    grid=np.arange(16).reshape(4,4)
    a,b=np.hsplit(grid,2)
    print(a)
    print(b)
    # 垂直分隔:使用vsplit函数可以垂直分隔数组,该函数有两个参数,第1个参数表示待分隔的数组,第2个参数表示将数组垂直分隔成几个小数组。
    # vsplit的使用
    grid=np.arange(16).reshape(4,4)
    a,b=np.vsplit(grid,2)#行分成 0+1  2+3
    a,b,c=np.vsplit(grid,[1,3])#行分成 0 1+2 3
    
  • 数学函数

    方法说明
    np.abs()、np.fabs()计算整数、浮点数的绝对值
    np.sqrt()计算各元素的平方根
    np.reciprocal()计算各元素的倒数
    np.square()计算各元素的平方
    np.exp()计算各元素的指数ex
    np.log() np.log10() np.log2()计算各元素的自然对数、底数为10的对数、底数为2的对数
    np.sign()计算各元素的符号,1(整数)、0(零)、-1(负数)
    np.ceil() np.floor() np.rint()对各元素分别向上取整、向下取整、四舍五入
    np.modf()将各元素的小数部分和整数部分以两个独立的数组返回
    np.cos() 、np.sin()、np.tan(对各元素求对应的三角函数
    np.add()、np.subtract()、np.multiply()、np.divide()对两个数组的各元素执行加法、减法、乘法、除法求每个元素的倒数
    a=[3,4,5,6,7,8]
    b=np.array(a)
    print(1/b)
    # reciprocal()函数的使用
    a=np.arange(1,10,dtype=np.float32).reshape(3,3)
    print(np.reciprocal(a))
    # square()函数的使用
    # 一维数组
    a=np.arange(1,10)
    print(np.square(a))
    #二维数组
    aa=np.arange(1,13).reshape(3,4)
    print(np.square(aa))
    # sign()函数的使用
    a=np.arange(-5,5)
    print(np.sign(a))#计算各元素的符号,1(整数)、0(零)、-1(负数)
    # modf()函数的使用
    b=np.arange(-5,5,0.4)
    print(np.modf(b))
    # 三角函数的使用:NumPy 提供了标准的三角函数:sin()、cos()、tan()。
    x=np.linspace(1,10,5)
    y=np.sin(x)
    print(y)
    # numpy.around(a,decimals) 函数返回指定数字的四舍五入值
    # decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
    # numpy.floor() 返回数字的下舍整数。
    # numpy.ceil() 返回数字的上入整数。
    a=np.array([1.0,4.55,123,0.657,25.323])
    print(np.around(a))
    print(np.around(a, decimals=1))
    print(np.around(a, decimals=-1))
    print(np.rint(a))
    print(np.floor(a))
    print(np.ceil(a))
    
  • 算术函数

    # 算术函数:如果参与运算的两个对象 都是ndarray,并且形状相同,那么会对位彼此之间进行(+ - * /)运算。NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide()。
    # 算术函数的使用
    a=np.arange(9,dtype=np.float32).reshape(3,3)
    b=np.array([10,10,10])
    print(np.add(a,b))
    print(np.subtract(a,b))
    print(np.multiply(a, b))
    print(np.divide(a, b))
    # 算术函数中out参数的使用
    x=np.arange(5)
    y=np.empty_like(x)
    np.multiply(x,10,out=y)
    print(y)
    # mod()函数的使用
    # numpy.mod() 计算输入数组中相应元素的相除后的余数。函数
    # numpy.remainder() 也产生相同的结果。
    a=np.array([10,10,30])
    b=np.array([3,5,7])
    print(np.mod(a, b))
    print(np.remainder(a, b))
    
  • 统计函数

    方法说明
    np.sum()求和
    np.prod()所有元素相乘
    np.mean()平均值
    np.std()标准差
    np.var()方差
    np.median(中数
    np.power()幂运算
    np.sqrt()开方
    np.min()最小值
    np.max()最大值
    np.argmin()最小值的下标
    np.argmax()最大值的下标
    np.cumsum()对数组中元素累积求和,可指定轴
    np.cumprod()对数组中元素累积求积,可指定轴
    np.ptp()计算一组数中最大值与最小值的差,可指定轴
    np.unique()删除数组中的重复数据,并对数据进行排序
    np.nonzero()返回数组中非零元素的索引
    power()函数的使用
    x=np.arange(1,5)
    y=np.empty_like(x)
    np.power(x,2,out=y)
    print(y)
    # median ()函数的使用
    a=np.array([4,2,1,5])
    print(np.median(a))#计算偶数个的中位数
    a=np.array([4,2,5])
    print(np.median(a))#奇数个的中位数
    a=np.arange(1,16).reshape(3,5)
    print(np.median(a))
    print(np.median(a,axis=0))#中间行
    print(np.median(a,axis=1))#中间列
    #mean函数的使用
    a=np.arange(1,11).reshape(2,5)
    print(np.mean(a))
    print(np.mean(a,axis=0))
    print(np.mean(a,axis=1))
    # 函数的使用
    a = np.random.randint(10,50,size=20)
    np.max(a)
    np.sum(a)
    np.min(a)
    np.max(a)
    np.ptp(a)
    np.unique(a)
    np.nonzero(a)
    
  • 其他常用函数

    方法说明
    np.tile()将数组的数据按照行列复制扩展
    np.repeat()将数组中的每个元素重复若干次
    roll()沿指定轴对数组元素进行移位
    resize()重新调整数组的大小
    place()/put()将数组中满足条件的元素/指定的元素替换为指定的值
    np.savetxt()将数据保存到txt文件中
    np.loadtxt()从文件中加载数据
    np.genfromtxt()根据文件内容中生成数据,可以指定缺失值的处理等
    np.any()如果数组中存在一个为True的元素(或者能转为True的元素),则返回
    np.all()True如果数组中所有元素都为True(或者能转为True的元素),则返回True
    np.where(条件,x,y)如果条件为True,对应值为x,否则对应值为y
    np.dot()将矩阵相乘
    np.sort()对数组进行排序,返回一个新的排好序的数组,原数组不变
    np.sort()返回的是数组值从小到大排序后元素对应的索引值
    # tile()和repeat()函数的使用
    a=np.arange(4)
    np.tile(a,2)##复制2次
    np.tile(a,(3,2))#行列复制
    print(np.repeat(a, 2))
    a=np.arange(1,13).reshape(3,4)
    np.repeat(a,2)
    print(np.repeat(a, 2, axis=0))
    print(np.repeat(a, 2, axis=1))
    # roll()函数的使用
    b=np.arange(12)
    print(np.roll(b, 3))#一维数组,向后调3个
    print(np.roll(b, -1))#向前调2个
    aa=np.arange(1,13).reshape(3,4)
    print(np.roll(aa, 2))
    print(np.roll(aa, 2, axis=0))
    # resize()函数的使用
    aa.reshape(4,3)#修改维度,元素个数必须相同
    np.resize(aa,(5,6)) #resize重新调整数组的大小,元素个数可以不相同
    # replace()和put()函数的使用
    aa=np.random.randint(40,100,(3,4))
    np.place(aa,aa<60,0)##小于60分的 全部替换为0
    aa=np.arange(1,13).reshape((3,4))
    np.put(aa,2,100)#put()指定的索引处的元素替换为指定的值
    # savetxt()和loadtxt()函数的使用
    a=np.random.randint(-50,100,1000)
    #保存
    np.savetxt('savetxt.txt',a,fmt='%d')
    #加载
    b=np.loadtxt('savetxt.txt',dtype=int)
    # any()、all()函数的使用
    x=np.array([False,True,False,1,0,True])
    np.any(x)#any函数 只要有一个元素为True,则结果返回True
    np.all(x)#all函数 只有所有元素都为True,则结果返回True
    # where()函数的使用
    np.random.seed()
    a=np.random.randint(20,100,10)
    print(a)
    print(np.where(a>50,True,False))
    # dot函数的使用
    x=np.array([[1,2],[3,4]])
    y=np.array([[2,3],[1,2]])
    x.dot(y)#dot函数 矩阵相乘  矩阵相乘前提是,第一个矩阵的列数和第二个矩阵的行数要相同
    x.dot(3) #每个元素与3相乘
    
  • 数组排序

    # 数组排序:排序中主要用到的方法是np.sort和np.argsort。其中np.sort()是对数组直接排序。而np.argsort()是返回排序后的原始索引。
    # 一维数组排序
    a=np.array([5,2,4,5,7,3,8])
    print(np.sort(a))
    print(np.argsort(a))#np.argsort()是返回排序后的原始索引。
    # 二维数组排序
    np.random.seed(44)
    a=np.random.randint(100,size=(4,6))
    print(np.sort(a))
    print(np.sort(a,axis=0))#上行比下行小
    print(np.sort(a,axis=1))#左列比右列小
    # 按最后一列进行排序
    b=a[:-1]
    print(b)#可以先获取最后一列的数组
    index=np.argsort(b)#获取最后一列数组排序后的原始索引
    
  • numpy广播机制

    # 广播的规则
    # 1,如果两个数组维度个数不同,那么小维度的数组形状会在左边补1
    # 2,如果两个数组形状在任何一个维度上都不匹配,数组的形状会沿着维度为1的维度扩展到匹配上另一个数组的形状
    # 3,如果没有维度形状为1,则会引发异常两个数组相加
    #  0 1 2    0 0 0
    #  0 1 2    1 1 1
    #  0 1 2    2 2 2
    a=np.array([0,1,2])
    print(a+5)
    b=np.array([2,2,2])
    print(a+b)
    # 维度不相同的数组相加
    a=np.arange(3)
    b=np.arange(3).reshape(3,1)
    print(a+b)
    
  • 比较掩码

    # 比较掩码:比较操作,会返回与参与运算数组形状相同的数组,其中,满足条件的为True,不满足的为False
    # 数组的比较操作
    a=np.array([[1,2,39],[34,45,67]])#传入的数组,需要和a形状一致,且类型为Bool类型,这个叫做掩码式索引
    print(a<50)
    # 掩码式索引取值,过滤掉不符合条件的
    print(a[np.array([[True,True,True],[True,True,False]])])
    print(a[a<50])
    

版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐