zoukankan      html  css  js  c++  java
  • 数据分析-Numpy

    什么是Numpy

    NumPy这个词来源于两个单词-- Numerical和Python。 NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组,很多的数据科学的包都是依赖于Numpy的。它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在原生Python中永远无法体验到的速度。

    安装

    pip install numpy
    

    ndarray

    numpy所有的操作都是围绕着数组展开的,这个数组的名字就叫做 ndarray ,在学习ndarray数组之前肯定有人会说这个东西和Python中的列表差不多啊,为什么不用列表呢,列表还要方便些。但是事实上通过ndarray不管是方便还是效率都远远地提升了。

    ndarray数组创建

    数组内的元素类型必须一致

    数组大小不可修改

    方法 描述
    array() 将python的列表转换为数组,可选择显式指定dtype
    arange() range的numpy版,支持浮点数
    linspace() 类似arange(),第三个参数为数组长度
    zeros() 根据指定形状和dtype创建全0数组
    ones() 根据指定形状和dtype创建全1数组
    empty() 根据指定形状和dtype创建空数组(随机值)
    eye() 根据指定边长和dtype创建单位矩阵
    import numpy as np
    
    lis = [1,2,3,4,5]
    np.array(lis)
    array([1, 2, 3, 4, 5])
    
    np.arange(10)
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    np.arange(0.5,10.5,1)
    array([0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5])
    
    #取范围内的n个数,差值相同
    np.linspace(1,10,10)
    array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
    
    np.zeros((2,2))
    array([[0., 0.],
           [0., 0.]])
    
    #ones和empty和zeros类似,但是empty会优先找内存中的数据,不一定是随机的
    
    np.eye(4,4)
    array([[1., 0., 0., 0.],
           [0., 1., 0., 0.],
           [0., 0., 1., 0.],
           [0., 0., 0., 1.]])
    

    常用属性

    属性 描述
    T 数组的转置(对高维数组而言)
    dtype 数组元素的数据类型
    size 数组元素的个数
    ndim 数组的维数
    shape 数组的维度大小(以元组形式)
    itemsize 每个项占用的字节数
    nbytes 数组中的所有数据消耗掉的字节数

    数据类型

    dtype

    类型 描述
    布尔型 bool_
    整型 int_ int8 int16 int32 int 64
    无符号整型 uint8 uint16 uint32 uint64
    浮点型 float_ float16 float32 float64
    #查看数据类型
    zx = np.ones((10,10))
    zx.dtype
    dtype('float64')
    
    #修改数据类型
    data = zx.astype(np.int16)
    data.dtype
    dtype('int16')
    
    #注意
    int8占1个字节,1字节(byte)占8位(bit)
     
    其中最高位代表符号位 1-负号;0-正号
    范围为1 1 1 1 1 1 1 1到0 1 1 1 1 1 1 1
    1 0 0 0 0 0 0 为-128    0 0 0 0 0 0 0 0为0,一共256个数
    范围-128-127
    

    运算

    #乘数字
    z1 = [1,2,3,4,5,6]
    z1 = np.array(z1)
    z1 * 2
    array([ 2,  4,  6,  8, 10, 12])
    
    #乘数组,注意要一样的数组才能计算
    z2 = [4,4,4,2,1,8]
    z1 * z2
    array([ 4,  8, 12,  8,  5, 48])
    
    #除此之外加减乘除类似
    

    索引切片

    #维度转换
    data = np.ones((10))
    
    #转2X5的二维
    zx = data.reshape(2,5)
    #转一维
    zx.reshape(10)
    

    切片,索引

    zx=([[ 0,  1,  2,  3,  4,  5],
           [ 6,  7,  8,  9, 10, 11],
           [12, 13, 14, 15, 16, 17],
           [18, 19, 20, 21, 22, 23],
           [24, 25, 26, 27, 28, 29]])
    
    data = np.array(zx)
    #0
    data[0,0]
    #8,9 14,15
    data[1:3,2:4]
    #3x3
    data[:3,:3]
    #步长2
    data[::2,::2]
    

    布尔型索引-筛选数据

    #筛选大于5的数据
    a[a>5]
    他会把每一个数据和5比较,如果满足条件就返回数据
    

    一元函数

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

    二元函数

    函数 功能
    add 将数组中对应的元素相加
    subtract 从第一个数组中减去第二个数组中的元素
    multiply 数组元素相乘
    divide、floor_divide 除法或向下圆整除法(舍弃余数)
    power 对第一个数组中的元素A,根据第二个数组中的相应元素B计算A**B
    maximum,fmax 计算最大值,fmax忽略NAN
    miximum,fmix 计算最小值,fmin忽略NAN
    mod 元素的求模计算(除法的余数)

    数学统计

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

    随机数

    函数 功能
    rand 返回给定维度的随机数组(0到1之间的数)
    randn 返回给定维度的随机数组
    randint 返回给定区间的随机整数
    choice 给定的一维数组中随机选择
    shuffle 原列表上将元素打乱(与random.shuffle相同)
    uniform 给定形状产生随机数组
    seed 设定随机种子(使相同参数生成的随机数相同)
    standard_normal 生成正态分布的随机样本数

    参考链接

    https://www.cnblogs.com/xiaoyuanqujing/articles/11647031.html

  • 相关阅读:
    C#中KeyDown和KeyPress区别
    c#快捷键设置和text输入限制
    问题总结
    c#串口编程和单片机通信重大发现
    c#类似单片机的8bit或运算
    c#中将默认常量(32bit)转换为8bit
    我的秋季个人阅读计划
    学期总结
    阅读笔记《软件秘籍》03
    阅读笔记--09
  • 原文地址:https://www.cnblogs.com/zx125/p/12198288.html
Copyright © 2011-2022 走看看