• NumPy


    简介

    Numpy 是高性能科学计算和数据分析的基础包。它也是 pandas 等其他数据分析的工具的基础,基本所有数据分析的包都用过它。

    NumPy 为 Python 带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。

    它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在 Python 级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度

    安装

    pip install numpy
    

    引用

    import numpy as np
    

    这是官方认证的导入方式,可能会有人说为什么不用from numpy import *,是因为在numpy 当中有一些方法与 Python 中自带的一些方法,例如maxmin等冲突,为了避免这些麻烦大家就约定俗成的都使用这种方法。



    为啥使用 numpy

    import numpy as np
    
    shop_car   = [12,2,3,6,4]  ### 购物车商品数量
    shop_price = [10,23,5,40,10]  ### 商品对应的价格
    
    ### 求一下,商品的总价格?
    
    shop_car_np = np.array(shop_car)   ### ndarray 一维数组
    shop_car_np
    

    array([12, 2, 3, 6, 4])

    shop_price_np = np.array(shop_price)
    shop_price_np
    

    array([10, 23, 5, 40, 10])

    shop_car_np * shop_price_np
    

    array([120, 46, 15, 240, 40])

    sum(shop_car_np * shop_price_np)
    

    461

    shop_car_np * 3
    

    array([36, 6, 9, 18, 12])


    创建 ndarry

    arr = np.array([1,2,3,3,5])
    
    arr  #### ndarray 一维数组
    

    array([1, 2, 3, 3, 5])

    arr2 =  np.array([ [1,2,3,4], [5,6,7,8],[1,2,3,4] ])
    arr2   #### ndarray 二维数组  2行4列数组
    
    array([[1, 2, 3, 4],
           [5, 6, 7, 8],
           [1, 2, 3, 4]])
    

    常见属性

    属性 描述
    T 数组的转置(对高维数组而言)
    dtype 数组元素的数据类型
    size 数组元素的个数
    ndim 数组的维数
    shape 数组的维度大小(以元组形式)
    arr
    

    array([1, 2, 3, 3, 5])

    arr.dtype   #### 数组元素的类型
    

    dtype('int64')

    arr.size  ### 数组元素的个数
    

    5

    arr.shape  #### 数组的维度,以元组的形式表示
    

    (5,)

    arr.ndim  ### 数组的维度,以整数的形式表示
    

    1

    arr2
    
    array([[1, 2, 3, 4],
           [5, 6, 7, 8],
           [1, 2, 3, 4]])
    
    arr2.shape
    

    (3, 4)

    arr2.ndim
    

    2

    arr2.T   #### 转置  把行变成列,把列变成行  对于高维数组而言
    
    array([[1, 5, 1],
           [2, 6, 2],
           [3, 7, 3],
           [4, 8, 4]])
    
    arr.dtype
    

    dtype('int64')

    arr
    

    array([1, 2, 3, 3, 5])

    arr.astype('float')  ####  astype() 强制转换一个数组的数据类型
    

    array([1., 2., 3., 3., 5.])


    数据类型

    类型 描述
    布尔型 bool_
    整型 int_ int8 int16 int32 int 64
    无符号整型 uint8 uint16 uint32 uint64
    浮点型 float_ float16 float32 float64
    复数型 complex_ complex64 complex128
    整型:
    int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数
    
    无符号整型:
    只能用来存正数,不能用来存负数
    
    补充:
    astype()方法可以修改数组的数据类型
    

    ndarry 的创建方式

    方法 描述
    array() 将列表转换为数组,可选择显式指定dtype
    arange() range的numpy版,支持浮点数
    linspace() 类似arange(),第三个参数为数组长度
    zeros() 根据指定形状和dtype创建全0数组
    ones() 根据指定形状和dtype创建全1数组
    empty() 根据指定形状和dtype创建空数组(随机值)
    eye() 根据指定边长和dtype创建单位矩阵
    arr = np.array([1,2,3,4,5,6])
    
    arr2 = np.arange(10)
    arr2
    

    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

    np.arange?   #### ?的作用是查看当前函数的使用方法 
    
    arr = np.arange(0, 10, 2)
    arr
    

    array([0, 2, 4, 6, 8])

    np.linspace(2,10, num=5, endpoint=False)  # endpoint 不包含最后一个
    

    array([2. , 3.6, 5.2, 6.8, 8.4])

    np.zeros(10)
    

    array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

    np.ones(10)
    

    array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

    np.empty([2,4])
    
    array([[0., 0., 0., 0.],
           [0., 0., 0., 0.]])
    
    np.eye(5, dtype=int)   #### 对称矩阵
    
    array([[1, 0, 0, 0, 0],
           [0, 1, 0, 0, 0],
           [0, 0, 1, 0, 0],
           [0, 0, 0, 1, 0],
           [0, 0, 0, 0, 1]])
    
    arr
    

    array([1, 2, 3, 4, 5, 6])

    arr.reshape(2,3)  #### reshape将一维数组转换成二维数组
    
    array([[1, 2, 3],
           [4, 5, 6]]
    

    索引

    arr
    

    array([1, 2, 3, 4, 5, 6])

    arr[3]  ### 一维数组中的索引下边也是从0开始,取值的方式和python中的列表是一样的
    

    4

    arr2 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
    arr
    
    array([[ 1,  2,  3,  4],
           [ 5,  6,  7,  8],
           [ 9, 10, 11, 12]])
    
    arr2[0,1]  #### ,号前面是行索引,后面是列索引
    

    2

    arr2[0][1]  ### 第一个是行索引,第二个是列索引
    

    2


    切片

    arr
    

    array([1, 2, 3, 4, 5, 6])

    arr[0:4]   # 第一个到第四个
    

    array([1, 2, 3, 4])

    arr[:]   # 全部取出
    

    array([1, 2, 3, 4, 5, 6])

    arr[2:]   # 第二个到最后一个
    

    array([3, 4, 5, 6])

    arr[:4]   # 第一个到第四个
    

    array([1, 2, 3, 4])

    arr[::-1]   # 反转
    

    array([6, 5, 4, 3, 2, 1])

    总结:一维数组的切片和列表中的切片用法完全一样

    arr2
    
    array([[ 1,  2,  3,  4],
           [ 5,  6,  7,  8],
           [ 9, 10, 11, 12]])
    
    arr2[0:2,1:3]  ### ,号的前面截取的是行 ,后面截取的是列
    
    array([[2, 3],
           [6, 7]])
    

    arr2[:, :2]  # 所有的行取到第二列
    
    array([[ 1,  2],
           [ 5,  6],
           [ 9, 10]])
    

    数组向量运算和矢量运算

    两个数组之间是可以进行 size 运算的

    shop_car_np 
    shop_price_np
    

    array([12, 2, 3, 6, 4])

    array([10, 23, 5, 40, 10])

    shop_car_np + shop_price_np
    

    array([22, 25, 8, 46, 14])


    shop_car_np * 4
    

    array([48, 8, 12, 24, 16])


    布尔型索引

    arr
    

    array([1, 2, 3, 4, 5, 6])

    需求:得到大于 4 的所有值

    arr > 4
    

    array([False, False, False, False, True, True])


    arr[arr>4]  #### 可以将布尔型的结果当成索引传入到数组中,最终获取对应的True的值
    

    array([5, 6])


    花式索引

    arr
    

    array([1, 2, 3, 4, 5, 6])

    返回一个包含[2,4,5]的数组的值

    arr[ [1,3,4] ]   #### 索引中套列表,内层列表的值是想取得值的对应索引下标
    

    array([2, 4, 5])


    一元函数

    函数 功能
    abs、fabs 分别是计算整数和浮点数的绝对值
    sqrt 计算各元素的平方根
    square 计算各元素的平方
    exp 计算各元素的指数e**x
    log 计算自然对数
    sign 计算各元素的正负号
    ceil 计算各元素的ceiling值
    floor 计算各元素floor值,即小于等于该值的最大整数
    rint 计算各元素的值四舍五入到最接近的整数,保留dtype
    modf 将数组的小数部分和整数部分以两个独立数组的形式返回,与Python的divmod方法类似
    isnan 计算各元素的正负号
    isinf 表示那些元素是无穷的布尔型数组
    cos,sin,tan 普通型和双曲型三角函数
    np.abs(-4.5)
    

    4.5


    np.sqrt(4)  # 平方根
    

    2.0


    np.square([2,3,4,5])  # 平方
    

    array([ 4, 9, 16, 25])


    np.exp(3)  # e**3 
    

    20.085536923187668


    np.log(20)
    

    2.995732273553991


    np.ceil(4.3)  #### 向上取整
    

    5.0


    np.floor(4.6)  ### 向下取整
    

    4.0


    np.rint(4.3)  ### 四设五入
    

    4.0


    np.modf(5.6)
    

    (0.5999999999999996, 5.0)


    np.isnan() ### is 判断 nan :数据分析领域特定一个数据类型 not a number 不是一个数

    np.nan == np.nan
    

    Flase


    type(np.nan)
    

    float


    数学统计爱函数

    sum 求和
    cumsum 求前缀和
    mean 求平均数
    std 求标准差
    var 求方差
    min 求最小值
    max 求最大值
    argmin 求最小值索引
    argmax 求最大值索引
    arr
    

    array([1, 2, 3, 4, 5, 6])

    np.cumsum(arr)
    

    array([ 1, 3, 6, 10, 15, 21])

    np.mean(arr)  ### 平均数
    

    3.5

    np.var(arr)  #### 方差:((1-3.5)**2 + (2-3.5)**2 +) / 5
    

    2.9166666666666665

    np.std(arr) ### 方差开根号  得到标准差
    

    1.707825127659933


    随机数生成

    函数 功能
    rand 给定形状产生随机数组(0到1之间的数)
    randint 给定形状产生随机整数
    chocie 给定形状产生随机选择
    shuffle 与random.shuffle相同
    uniform 给定形状产生随机数组
    np.random.rand(10) ### 随机生成10个0-1之间的数
    
    array([0.62673264, 0.72358427, 0.84585648, 0.90063347, 0.12527228,
           0.49181793, 0.28931806, 0.6536062 , 0.14515325, 0.09002512])
    

    np.random.randint(0,10)  ### 生成一个0-10之间的随机整数
    

    5


    np.random.choice(5,3)  ### 生成三个0-5之间的数
    

    array([3, 2, 0])


    arr
    

    array([1, 2, 3, 4, 5, 6])

    np.random.shuffle(arr)
    arr
    

    array([1, 2, 3, 4, 6, 5])


    np.random.uniform(-1,0,1000)  # -1 到 0 直接 1000 个随机浮点数
    
  • 相关阅读:
    修改滚动条样式
    svg转png
    封装普通数据为树菜单结构数据模式
    js调用打印机打印
    jq 上传下载进度条
    html内容溢出部分...
    html调用html的方法
    4 人类社会及其发展规律
    7 社会主义
    8 共产主义
  • 原文地址:https://www.cnblogs.com/kai-/p/12605456.html
Copyright © 2020-2023  润新知