zoukankan      html  css  js  c++  java
  • python第三方库之numpy基础

    前言

    numpy是python的科学计算模块,底层实现用c代码,运算效率很高。numpy的核心是矩阵narray运算。

    narray介绍

    • 矩阵拥有的属性

    ndim属性:维度个数
    shape属性:维度大小
    dtype属性:数据类型

    常用矩阵创建方法

    import numpy as np
    # 由列表转化
    np.array([[1,2],[3,4]])
    # 创建多维随机浮点数矩阵,区间0.0 ~ 1.0
    arr = np.random.rand(3, 4)
    # 创建多维整数矩阵,指定随机区间
    arr = np.random.randint(-1, 5, size = (3, 4))
    # 创建多维随机浮点数矩阵,指定区间
    np.random.uniform(-1, 5, size = (3, 4))
    # 创建全是0的矩阵
    np.zeros((3,4))
    # 仿照一个矩阵的形状和类型创建0矩阵
    np.zeros_like([3,4])
    # 创建1的矩阵
    np.ones((3,4))
    #仿照一个矩阵的形状和类型创建1矩阵
    np.ones_like((3,4))
    # 创建随机值
    np.empty((3,4))
    # 对原来矩阵打乱顺序
    np.random.shuffle(arr)
    

    常用基础运算方法

    如果python代码中有很多涉及数学运算的操作,使用numpy是一种很好的提高运算效率的方法。

    import numpy as np
    
    np.sum()           # 计算矩阵元素的和
    np.mean()          # 计算平均值
    np.e               # 自然数e
    np.pi              # 自然数π
    np.abs()           # 计算绝对值,可以是数组
    np.std(li)         # 计算标准差
    np.var()           # 计算方差
    np.max()           # 计算最大值
    np.min()           # 计算最小值
    np.cov(a,b)        # 计算协方差,得到矩阵,去[0,1]或[1,0]位置的为协方差
    np.alen(a)         # 计算矩阵的长度,多维矩阵计算第一列的长度,即列数
    np.argmax()        # 返回最大索引下标值
    np.argmin()        # 返回最小索引下标值
    np.ceil():         # 向上最接近的整数,参数是 number 或 array
    np.floor():        # 向下最接近的整数,参数是 number 或 array
    np.rint():         # 四舍五入,参数是 number 或 array
    np.isnan():        # 判断元素是否为 NaN(Not a Number),参数是 number 或 array,返回布尔矩阵
    np.multiply(arr1, arr2):  # 对应元素相乘,参数是 number 或 array
    np.divide(arr1, arr2):  # 元素相除,参数是 number 或 array
    np.where(condition, x, y): # 三元运算符,x if condition else y
    np.any():          # 至少有一个元素满足指定条件,返回True
    np.all()           # 所有的元素满足指定条件,返回True
    
    np.unique()        # 去除重复值并返回上升的排序结果
    
    v = np.who({'aaa':arr1}) # 打印arr的相关属性
    

    矢量的加减乘

    arr1 = np.random.randint(0,10,size=(3,4))
    print(arr1*arr1) # 相对应元素相乘
    print(arr1+arr1) # 对应元素相加
    print(arr1-arr1) # 对应元素相减
    

    布尔判断

    arr1 = np.random.randint(0,10,size=(2,3))
    print(arr1 < 5)
    
    [[False False False]
     [False  True False]]
    

    矩阵转换

    # 多维使用数字表示维数,0,1,2,3代表四维
    arr = np.random.rand(2,3)    # 2x3 数组
    print(arr.transpose()) # 转换为 3x2 数组,默认规则行列交换
    arr.transpose((3,2,1,0)) # 行和列交换
    arr1 = arr.T # 行列交换
    
    # 从原来矩阵按规则产生新矩阵
    np.take()
    >>> a = [4, 3, 5, 7, 6, 8]
    >>> indices = [0, 1, 4]
    >>> np.take(a, indices)
    array([4, 3, 6])
    >>> np.take(a, [[0, 1], [2, 3]])
        array([[4, 3],
               [5, 7]])
    
    # 在不改变数据的情况下改变矩阵形状
    np.reshape()
    >>> np.reshape(a, (2, 3))
        array([[0, 1, 2],
               [3, 4, 5]])
    
    # 数据复制
    np.repeat()
    >>> np.repeat(3, 4)
        array([3, 3, 3, 3])
    
    

    读取数据文件

    从txt文件中加载矩阵数据。

    data_array = np.loadtxt(filename,  # 文件名
                            delimiter=',',  # 分隔符
                            dtype=int,  # 数据类型,指的是生成的矩阵的数据类型
                            usecols=(0,1))  # 指定读取的列号
    

    参考

  • 相关阅读:
    鼠标滑动显示层
    软件过程+改进 +UML
    接口和抽象类的区别
    SQL SERVER – Difference Between EXEC and EXECUTE vs EXEC() – Use EXEC/EXECUTE for SP always
    XDocument.Parse Method (String)
    Robocopy use case
    Two Solutions to fix issue: ORDER BY items must appear in the select list if the statement contains a UNION, ...
    [转载]:SQL Server 连接字符串和身份验证
    Insert Data From One Table to Another
    volatile (C# Reference)
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/9493583.html
Copyright © 2011-2022 走看看