zoukankan      html  css  js  c++  java
  • python numpy模块

    Numpy

    NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

    NumPy的主要功能:

      ndarray,一个多维数组结构,高效且节省空间
      无需循环对整组数据进行快速运算的数学函数
      读写磁盘数据的工具以及用于操作内存映射文件的工具
      线性代数、随机数生成和傅里叶变换功能
      用于集成C、C++等代码的工具

    安装方法:pip install numpy
    引用方式:import numpy as np



    创建ndarray:np.array()
    应用场景:
      例1:已知若干家跨国公司的市值(美元),将其换算为人民币
      例2:已知购物车中每件商品的价格与商品件数,求总金额
    ndarray还可以是多维数组,但元素类型必须相同
    常用属性:
      

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

    dtype:
      bool_, int(8,16,32,64), uint(8,16,32,64), float(16,32,64)
    类型转换:astype()
    创建ndarray:

    array()    将列表转换为数组,可选择显式指定dtype
        >>> np.array([1, 2, 3])
        array([1, 2, 3])
    arange()    range的numpy版,支持浮点数
        >>> np.arange(3.0)
        array([ 0.,  1.,  2.])
    linspace()    类似arange(),第三个参数为数组长度
        >>> np.linspace(2.0, 3.0, num=5)
        array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
    zeros()    根据指定形状和dtype创建全0数组
        >>> np.zeros((2, 1))
        array([[ 0.],
               [ 0.]])
    ones()    根据指定形状和dtype创建全1数组
        np.ones((2, 1))
        array([[ 1.],
               [ 1.]])
    empty()    根据指定形状和dtype创建空数组(随机值)
        np.empty([2, 2], dtype=int)
        array([[-1073741821, -1067949133],
           [  496041986,    19249760]])                     #random
    eye()    根据指定边长和dtype创建单位矩阵
        >>> np.eye(2, dtype=int)
        array([[1, 0],
               [0, 1]])
    reshape()    分解,合并
        >>> a = np.array([[1,2,3], [4,5,6]])
        >>> np.reshape(a, 6)
        array([1, 2, 3, 4, 5, 6])
        >>> np.reshape(a, (3,-1))       
        array([[1, 2],
               [3, 4],
               [5, 6]])

    数组和标量之间的运算
      a+1 a*3 1//a(整除) a**0.5
    同样大小数组之间的运算
      a+b a/b a**b
    数组的索引

    a[5]    
    a2[2][3]    
    a2[2,3]    # 第几维数组的第几个索引,跟上面的写法得到结果一样
    数组的切片
    a[5:8]    
    a[:3] = 1    # 切片的数组都赋值1
    a2[1:2, :4]    # 第二个数组,0到3的索引
    a2[:,:1]    # 所有数组,索引为0的值
    a2[:,1]    # 所有数组,索引为1的值
    与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。    
    b = a[:4]
    b[-1] = 250
    【解决方法:copy()】# 这样b是一个新的内存地址
    b = a[:4].copy()
    b[-1] = 250

    布尔型索引

    给一个数组,选出数组中所有大于5的数。
      a[a>5]
    原理:
      a>5会对a中的每一个元素进行判断,返回一个布尔数组
      布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组

    给一个数组,选出数组中所有大于5的偶数。
      a[(a>5) & (a%2==0)]
    给一个数组,选出数组中所有大于5的数和偶数。
      a[(a>5) | (a%2==0)]

    花式索引

    对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
      a[[1,3,4,6,7]]

    对一个二维数组,选出其第一列和第三列,组成新的二维数组。
      a[:,[1,3]]

    通过用函数

      一元函数:

        abs #绝对值

        sqrt #开方

        ceil #向上取整  

        floor #向下取整

        rint #四舍五入

        trunc #ceil

        modf #把小数整数分开

          >>> np.modf([0, 3.5])
          (array([ 0. , 0.5]), array([ 0., 3.]))
          >>> np.modf(-0.5)
          (-0.5, -0)

      isnan
        0/0 是nan

      isinf

    In [60]: a = np.arange(1,5)
    
    In [61]: b = np.arange(1,5)
    
    In [62]: b[-1]=0
    
    In [63]: a/b
    C:Python35Scriptsipython:1: RuntimeWarning: divide by zero encountered in tru
    e_divide
    Out[63]: array([ 1., 1., 1., inf])
    In [64]: c=a/b
    C:Python35Scriptsipython:1: RuntimeWarning: divide by zero encountered in tru
    e_divide
    # 结合布尔索引取值
    In [65]: c[~np.isinf(c)]
    Out[65]: array([ 1., 1., 1.])


    二元函数:
      maximum
        np.maximum(a,b) #得到这俩列表中有最大的数的元素
      minimum        #最小

    数学和统计方法
      sum 求和
      mean 求平均数
      std 求标准差
      var 求方差
      min 求最小值
      max 求最大值
      argmin 求最小值索引
      argmax 求最大值索引

    np.random 随机数
      rand 给定形状产生随机数组(0到1之间的数)
      randint 给定形状产生随机整数
      choice 给定形状产生随机选择
      shuffle 与random.shuffle相同
      uniform 给定形状产生随机数组

  • 相关阅读:
    Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍
    Java高级项目实战之CRM系统01:CRM系统概念和分类、企业项目开发流程
    Java字符串编码
    Java线程有哪些不太为人所知的技巧与用法?
    捕获异常之使用SLF4J和Logback
    捕获异常之使用Log4j
    Idea 热部署插件JRebel 安装与环境配置-上海尚学堂Java培训
    Java变量常量声明和定义
    LeetCode239 滑动窗口最大值
    LeetCode347. 前 K 个高频元素
  • 原文地址:https://www.cnblogs.com/wangyufu/p/7452254.html
Copyright © 2011-2022 走看看