• 常用 numpy 函数(长期更新)


    np.where()

    np.where有两种用法

    • np.where(condition,x,y) 当where内有三个参数时,第一个参数表示条件,当条件成立时where方法返回x,当条件不成立时where返回y
    #用法一
    #当self.net_input(X)返回的值大于等于0.0时,where返回1,否则返回0
    np.where(self.net_input(X) >= 0.0, 1, 0)
    
    • 1
    • 2
    • 3
    • np.where(condition) 当where内只有一个参数时,那个参数表示条件,当条件成立时,where返回的是每个符合condition条件元素的坐标返回的是以元组的形式
    #用法二
    a = np.array([2,4,6,8,10])
    #只有一个参数表示条件的时候
    np.where(a > 5)
    
    输出:
    (array([2, 3, 4], dtype=int64),)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    np.zeros()

    返回值:ndarray
    给定shape,dtype,order条件下的数组
    在这里插入图片描述

    np.zeros_like()

    返回值:ndarray
    和a同样的shape和数据类型(type)的子类零数组(向量)
    在这里插入图片描述

    np.divide()

    • 用例:
      numpy.divide(x1, x2, /, out=None, *, where=True, casting=‘same_kind’, order=‘K’, dtype=None, subok=True[, signature, extobj]) =

    • 功能:
      数组对应位置元素做除法。
      这里的除法结果和Python传统的地板除不同,这里得到的是真实值。numpy.divide的计算结果适应于输出值的数值类型,与输入值的数值类型无关。

    • 参数
      在这里插入图片描述

    • 返回值
      在这里插入图片描述

    • 备注
      在Python 2.2中地板除运算符//和除法运算符/的计算结果一致。通过在程序中添加from future import division代码段可以将默认的地板除运算符/变为真正的除法运算符。
      在Python 3.0中//为地板除运算符而/为真正的除法运算符。函数true_divide(x1, x2)的计算结果也为真正除法。

    • 示例:

    from __future__ import division
    import numpy as np
    x = np.arange(5)
    print('真正除法的运算结果:{}'.format(np.true_divide(x, 4)))
    print('地板除运算结果:{}'.format(x//4))
    print('真正除法的运算结果:{}'.format(x/4))
    # 会将4复制5个变为(5,)数组
    print('真正除法的运算结果:{}'.format(np.divide(x, 4)))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    真正除法的运算结果:[0. 0.25 0.5 0.75 1. ]
    地板除运算结果:[0 0 0 0 1]
    真正除法的运算结果:[0. 0.25 0.5 0.75 1. ]
    真正除法的运算结果:[0. 0.25 0.5 0.75 1. ]
    
    • 1
    • 2
    • 3
    • 4

    np.linalg.norm()

    np.linalg.norm()用法总结

    np.linalg.norm()用于求范数,linalg本意为linear(线性) + algebra(代数),norm则表示范数。

    用法

    np.linalg.norm(x, ord=None, axis=None, keepdims=False)
    
    • 1
    • x: 表示矩阵(一维数据也是可以的)

    • ord: 表示范数类型
      在这里插入图片描述
      矩阵的向量:
      ord=1:表示求列和的最大值
      ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根
      ord=∞:表示求行和的最大值
      ord=None:表示求整体的矩阵元素平方和,再开根号

    • axis:轴
      Python的numpy中axis=0、axis=1、axis=2解释

    • keepdims:表示是否保持矩阵的二位特性,True表示保持,False表示不保持,默认为False

    np.uint8()

    uint8是专门用于存储各种图像的(包括RGB,灰度图像等),范围是从0–255

    用opencv处理图像时,可以发现获得的矩阵类型都是uint8

    import cv2 as cv
    img=cv.imread(hello.png)
    print(img)
    array([[[...],
            [...],
            [...]]],dtype='uint8')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    转换成 uint8 类型方法:

    1. numpy有np.uint8()函数,但是这个函数仅仅是对原数据和0xff相与(和最低2字节数据相与),这就容易导致如果原数据是大于255的,那么在直接使用np.uint8()后,比第八位更大的数据都被截断了,比如:
    >>>a=[2000,100,2]
    >>>np.uint8(a)
    array([208, 100, 2], dtype=uint8)
    
    • 1
    • 2
    • 3
    1. 用 cv2.normalize 函数配合 cv2.NORM_MINMAX,可以设置目标数组的最大值和最小值,然后让原数组等比例的放大或缩小到目标数组,如下面的例子中是将 img 的所有数字等比例的放大或缩小到 0–255 范围的数组中(归一化)
    cv2.normalize(img, out, 0, 255, cv2.NORM_MINMAX)
    
    • 1

    然后改变数据类型

    np.array([out],dtype=‘uint8’)
    
    • 1

    总结:要想将当前的数组作为图像类型来进行各种操作,就要转换到uint8类型,转换的方式推荐使用第二种,因为第一种在值大于255以后就容易丢失。

    np.clip()

    numpy.clip(a, a_min, a_max, out=None)
    
    • 1

    参数说明

    • a : 输入的数组
    • a_min: 限定的最小值 也可以是数组 如果为数组时 shape必须和a一样
    • a_max:限定的最大值 也可以是数组 shape和a一样
    • out:剪裁后的数组存入的数组
  • 相关阅读:
    Java框架 MyBaits核心配置文件详解
    代码随想录1刷—数组篇
    DSA之栈
    Echarts的配置解释 直角坐标系内绘图网格组件(grid)
    vue项目中使用luckysheet
    1158. 市场分析 I
    使用redis,怎么解决并发问题?
    CUDA中的函数执行空间说明符
    java使用libreOffice预览word,ppt,txt等文档
    无需重启应用,动态采集任意点位日志
  • 原文地址:https://blog.csdn.net/zeroheitao/article/details/127866806