python机器学习——Numpy

NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!

  • 以下的缩写均是导入模块的缩写

    import numpty as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
  • 使用np.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)有python list创建
    参数为列表:[1,2,3,4,5]

    名称描述
    object数组或嵌套的数列
    dtype数组元素的数据类型,可选
    copy对象是否需要复制,可选
    order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
    subok默认返回一个与基类类型一致的数组
    ndmin指定生成数组的最小维度
  • np.asarray(a, dtype = None, order = None)
    numpy.asarray 类似 numpy.array,但 numpy.asarray 只有三个,比 numpy.array 少两个。

    参数描述
    a任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表,多维数组
    dtype数据类型,可选
    order可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。
  • NumPy 的数组中比较重要 ndarray 对象属性有:

    属性说明
    ndarray.ndim秩,即轴的数量或维度的数量
    ndarray.shape数组的维度,对于矩阵,n 行 m 列
    ndarray.size数组元素的总个数,相当于 .shape 中 n*m 的值
    ndarray.dtypendarray 对象的元素类型
    ndarray.itemsizendarray 对象中每个元素的大小,以字节为单位
    ndarray.flagsndarray 对象的内存信息
    ndarray.realndarray元素的实部
    ndarray.imagndarray 元素的虚部
    ndarray.data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
    • 注意:
      numpy默认ndarray的所有的数据类型都是相同的
      如果传递进来的数据类型有不同的,则统一为同一类型,优先级为:str > float > int
    arr = np.array([1,2,3,4,5])
    arr.shape	#显示的是维数,以元祖的形式输出
    
  • np.dtype(object, align, copy)

    名称描述
    object要转换为的数据类型对象
    align如果为 true,填充字段使其类似 C 的结构体。
    copy复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
  • numpy.empty(shape, dtype = float, order = ‘C’)
    numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

    参数描述
    shape数组形状
    dtype数据类型,可选
    order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。
  • np.ones(shape,dtype=None,order=‘C’)
    创建指定形状的数组,数组元素以 1 来填充

    参数描述
    shape数组形状
    dtype数据类型,可选
    order‘C’ 用于 C 的行数组,或者 ‘F’ 用于 FORTRAN 的列数组
    func = np.ones(shape=(5,4),dtype=int)	#创建的是一个5行4列的二维数组
    

    代码执行后显示的是一张白色图片

    ones= np.ones(shape=(100,80,3),dtype=float)
    plt.imshow(ones)
    plt.show()
    
  • np.zeros(shape,dtype=float,order=‘C’)

    参数描述
    shape数组形状
    dtype数据类型,可选
    order‘C’ 用于 C 的行数组,或者 ‘F’ 用于 FORTRAN 的列数组

    语法要求没有那么严格,输出的是一个四维数组,默认值全部使用0填充

     zeros = np.zeros((4,4))
    
  • np.full(shape,fill_value,dtype=None,order=‘C’)
    创建的是一个数组,默认值是用fill_value的值进行填充

    full = np.full((10,10),fill_value=1024)
    
  • np.eye(N,M=None,k=0,dtype=float)
    创建一个N维数组,对角线为1其他位置为0,创建的是一个满秩的矩阵

     eye = np.eye(10,dtype=int)
    
  • np.linspace(start,stop,num=50,endpoint=True,retstep=Flase,dtype=None)

    描述
    tart序列的起始值
    top序列的终止值,如果endpoint为true,该值包含于数列中
    um要生成的等步长的样本数量,默认为50
    ndpoint该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。
    etstep如果为 True 时,生成的数组中会显示间距,反之不显示。
    typendarray 的数据类型

    函数用于创建一个一维数组,数组是一个等差数列构成的

    lins = np.linspace(1,100,20)
    
  • np.arange(start,stop,step,dtype=None)

    参数描述
    start起始值,默认为0
    stop终止值(不包含)
    step步长,默认为1
    dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

    根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。使用改方法创造ndarray时候,左闭右开

    ara = np.arange(0,50,2)
    
  • np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
    base 参数意思是取对数的时候 log 的下标。

    参数描述
    start序列的起始值为:base ** start
    stop序列的终止值为:base ** stop。如果endpoint为true,该值包含于数列中
    num要生成的等步长的样本数量,默认为50
    endpoint该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。
    base对数 log 的底数。
    dtypendarray 的数据类型

    函数用于创建一个于等比数列

  • np.random.randint(low,high=None,size=None,dtype=‘1’)
    生成随机数,在0到100之间随机生成5个随机数

    ran = np.random.randint(0,100,size=5)
    
  • np.random.randn(d0,d1,d2,d3,…,dn)
    生成的是标准正态分布

    randn = np.random.randn(100)
    
  • np.random.normal(loc=0.0,scale=1.0,size=None)
    生成的也是一个正态分布,只不过这个中间值是自己可以指定,当scale的值越大时,数据的波动就会越大

    normal = np.random.normal(loc=170,scale=50,size=100)
    
  • np.random.random(size=None)
    生成0到1的随机数
    eg:使用随机数生成一张图片,数字3表示的是生成的是三维的图片

    r = np.random.random(size=(200,300,3))
    plt.imshow(r)
    plt.show()
    
  • 级联
    np.concatenate()级联需要注意的点:

    • 级联的参数是列表:一定要加中括号或者是小括号
    • 维度必须相同
    • 形状相同
    • 级联的方向默认是shape这个tuple的第一个值所代表的维度方向
    • 可通过axis参数改变级联的方向

    np.hstack:水平级联
    np.vstack:垂直级联

  • ndarray的排序

    • 快速排序
      np.sort()与ndarray.sort()都可以,但是有区别:
      np.sort()不改变输入
      ndarray.sort()本地处理,不占用空间,但改变输入
    • 部分排序
      np.partition(a,k)
      当k为正时,我们得到的是最小的k个数
      当k为负时,我们得到的是醉倒的k个数
SciPy

SciPy是构建在numpy的基础之上的,它提供了许多的操作numpy的数组的函数。SciPy是一款方便、易于使用、专为科学和工程设计的python工具包,它包括了统计、优化、整合以及线性代数模块、傅里叶变换、信号和图像图例,常微分方差的求解等

  • scipy 文件输入输出
    • 随机生成数组,使用scipy中的io.savemat()保存,文件格式是.mat,标准的二进制文件
      import numpy as np
      import pandas as pd
      from pandas import Series,DataFrame
      import matplotlib.pyplot as plt
      import scipy.io as spio
      import scipy.misc as misc
      nd = np.random.randint(0,150,size=10)
      # 保存文件
      spio.savemat(file_name="nd",mdict={"data":nd})
      # 读取文件
      spio_data = spio.loadmat("nd")["data"]
      print(spio_data)
      
  • 图片处理
    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    import matplotlib.pyplot as plt
    import scipy.misc as misc
    import scipy.ndimage as ndimage
    # 读取图片显示图片
    face = misc.face(gray=True)
    # gray=True 获取的图片是黑白
    plt.imshow(face,cmap="gray")
    plt.show()
    # 移动坐标
    shift_face = ndimage.shift(face,[200,0],mode='constant')
    plt.imshow(shift_face,cmap="gray")
    plt.show()
    # 旋转图片
    face_rotate = ndimage.rotate(face,angle=180)
    plt.imshow(face_rotate,cmap="gray")
    plt.show()
    # 缩放图片
    face_zoom = ndimage.zoom(face,zoom=0.5)
    plt.imshow(face_zoom,cmap="gray")
    plt.show()
    # 切割图片
    face_spilt = face[:512,-512:]
    plt.imshow(face_spilt,cmap="gray")
    plt.show()
    
  • 图片进行过滤
    添加噪声,对噪声图片使用ndimage中的高斯滤波,中值滤波,signal中维纳滤波进行处理,是图片变得清楚
    • 加载图片,使用灰色图片misc.face()添加噪声
      import numpy as np
      import pandas as pd
      from pandas import Series,DataFrame
      import matplotlib.pyplot as plt
      import scipy.misc as misc
      import scipy.ndimage as ndimage
      # 将图片置为灰色图片
      face = misc.face(gray=True)
      face = face[:512,-512:]
      # 获取图片的标准方差
      std = face.std()
      # 获取图片的维度
      shape = face.shape
      # 添加噪声
      face = face + std*0.8*np.random.random(shape)
      plt.imshow(face,cmap='gray')
      plt.savefig('./test.jpg')
      plt.show()
      
    • 高斯滤波signal:高斯核的标准偏差
      通过改变高斯核的标准偏差来改变图片的清晰度
      import numpy as np
      import pandas as pd
      from pandas import Series,DataFrame
      import matplotlib.pyplot as plt
      import scipy.misc as misc
      import scipy.ndimage as ndimage
      # 将图片置为灰色图片
      face = misc.face(gray=True)
      face = face[:512,-512:]
      # 获取图片的标准方差
      std = face.std()
      # 获取图片的维度
      shape = face.shape
      # 添加噪声
      face = face + std*0.8*np.random.random(shape)
      plt.imshow(face,cmap='gray')
      plt.show()
      # 高斯滤波signal:高斯核的标准偏差
      face_g = ndimage.gaussian_filter(face,sigma=0.8)
      plt.imshow(face_g,cmap='gray')
      plt.savefig('./test.jpg')
      plt.show()
      
    • 中值滤波参数size:给出在每个元素上从输入数组中去除的形状位置,定义过滤器功能的输入
      import numpy as np
      import pandas as pd
      from pandas import Series,DataFrame
      import matplotlib.pyplot as plt
      import scipy.misc as misc
      import scipy.ndimage as ndimage
      # 将图片置为灰色图片
      face = misc.face(gray=True)
      face = face[:512,-512:]
      # 获取图片的标准方差
      std = face.std()
      # 获取图片的维度
      shape = face.shape
      # 添加噪声
      face = face + std*0.8*np.random.random(shape)
      plt.imshow(face,cmap='gray')
      plt.show()
      # 中值滤波参数size:给出在每个元素上从输入数组中去除的形状位置,定义过滤器功能的输入
      face_median = ndimage.median_filter(face,size=3)
      plt.imshow(face_median,cmap='gray')
      plt.savefig('./test.jpg')
      plt.show()
      
    • signal维纳滤波mysize:滤镜尺寸的标量
      import numpy as np
      import pandas as pd
      from pandas import Series,DataFrame
      import matplotlib.pyplot as plt
      import scipy.misc as misc
      import scipy.ndimage as ndimage
      import scipy.signal as signal
      # 将图片置为灰色图片
      face = misc.face(gray=True)
      face = face[:512,-512:]
      # 获取图片的标准方差
      std = face.std()
      # 获取图片的维度
      shape = face.shape
      # 添加噪声
      face = face + std*0.8*np.random.random(shape)
      plt.imshow(face,cmap='gray')
      plt.show()
      # signal维纳滤波mysize:滤镜尺寸的标量
      face_signal = signal.wiener(face,mysize=5)
      plt.imshow(face_signal,cmap='gray')
      plt.savefig('./test.jpg')
      plt.show()
      
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值