zoukankan      html  css  js  c++  java
  • 数据分析之NumPy

    一:NumPy的介绍

      NumPy是用于科学计算的一个开源Python扩充程序库,它为Python提供了高性能的数组与矩阵运算处理能力,NumPy为Python带来了真正的多位数组功能,并且提供了丰富的函数库处理这些数组。常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环放到C语言的运算,明显的提高了程序的运算速度。

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

    二:NumPy的基本使用

      安装方法:pip install numpy

      引用方式:import numpy as np

      NumPy的核心功能是“ndarray”(即n-dimensional array,多维数组)数据结构。

      特点:

        连续内存分配、向量化操作、布尔选择、分片(sliceability)

       NumPy的主要功能:

        ndarray,一个多位数组结构,高效且节省空间

        无需循环对数组数据进行运算

        读写磁盘数据的工具以及用于操作内存映射文件的工具

        线性代数、随机数生成和傅里叶变换功能

        用于继承C、C++等代码的工具

    三:ndarray基本属性

      1:基本属性

      ndarray.ndmin数组轴的个数

      ndarray.shape数组的维度,这是一个指示数组在每个维度上大小的整数元祖。例如一个n排m列的矩阵,它的shape属性将是(2,3)

      ndarray.size数组个数的总个数,等于shape属性中元祖元素的乘积。

      ndarray.dtype一个用于描述数组中元素类型的对象,可以创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。

      ndarray.itemsize数组中每个元素的字节大小,例如,一个元素类型为float64的数组,itemsize属性值为8(64/8),又如,一个元素类型为complex32的数组item属性为4(32/8)

      T :数组的转置(对高维度数组而言)

      dtype: 数组元素的数据类型

      size:数组元素的个数

      2:NumPy: ndarray 多维数组对象

      创建ndarray:

        array(): 将列表转换为数组,可选择显示指定dtype

        arange(): range 的NumPy版,支持浮点数

        linspace(): 类似arange(),第三个参数为数组长度

        zeros(): 根据指定形状和dtype创建全0数组

        ones(): 根据指定形状和dtype创建全1数组

        reshape(): 更改数组的维度

    .ndim :维度 
    .shape :各维度的尺度 (2,5) 
    .size :元素的个数 10 
    .dtype :元素的类型 dtype(‘int32’) 
    .itemsize :每个元素的大小,以字节为单位 ,每个元素占4个字节 
    ndarray数组的创建 
    np.arange(n) ; 元素从0到n-1的ndarray类型 
    np.ones(shape): 生成全1 
    np.zeros((shape), ddtype = np.int32) : 生成int32型的全0 
    np.full(shape, val): 生成全为val 
    np.eye(n) : 生成单位矩阵
    
    np.ones_like(a) : 按数组a的形状生成全1的数组 
    np.zeros_like(a): 同理 
    np.full_like (a, val) : 同理
    
    np.linspace(1,10,4): 根据起止数据等间距地生成数组 
    np.linspace(1,10,4, endpoint = False):endpoint 表示10是否作为生成的元素 
    常用
    .reshape(shape) : 不改变当前数组,依shape生成 
    .resize(shape) : 改变当前数组,依shape生成 
    .swapaxes(ax1, ax2) : 将两个维度调换 
    .flatten() : 对数组进行降维,返回折叠后的一位数组
    数组的维度变换
    数据类型的转换 :a.astype(new_type) : eg, a.astype (np.float) 
    数组向列表的转换: a.tolist() 
    数组的类型变换
    a = np.array ([9, 8, 7, 6, 5, ]) 
    a[1:4:2] –> array([8, 6]) : a[起始编号:终止编号(不含): 步长]
    一维数组切片
    a = np.arange(24).reshape((2, 3, 4)) 
    a[1, 2, 3] 表示 3个维度上的编号, 各个维度的编号用逗号分隔
    多维数组索引
    a [:,:,::2 ] 缺省时,表示从第0个元素开始,到最后一个元素 
    多维数组切片
    np.abs(a) np.fabs(a) : 取各元素的绝对值 
    np.sqrt(a) : 计算各元素的平方根 
    np.square(a): 计算各元素的平方 
    np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数 
    np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整) 
    np.rint(a) : 各元素 四舍五入 
    np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回 
    np.exp(a) : 计算各元素的指数值 
    np.sign(a) : 计算各元素的符号值 1(+),0,-1(-) 
    . 
    np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值 
    np.minimum(a, b) np.fmin() : 取最小值 
    np.mod(a, b) : 元素级的模运算 
    np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素
    数组运算
    sum(a, axis = None) : 依给定轴axis计算数组a相关元素之和,axis为整数或者元组 
    mean(a, axis = None) : 同理,计算平均值 
    average(a, axis =None, weights=None) : 依给定轴axis计算数组a相关元素的加权平均值 
    std(a, axis = None) :同理,计算标准差 
    var(a, axis = None): 计算方差 
    eg: np.mean(a, axis =1) : 对数组a的第二维度的数据进行求平均 
    a = np.arange(15).reshape(3, 5) 
    np.average(a, axis =0, weights =[10, 5, 1]) : 对a第一各维度加权求平均,weights中为权重,注意要和a的第一维匹配
    
    min(a) max(a) : 计算数组a的最小值和最大值 
    argmin(a) argmax(a) : 计算数组a的最小、最大值的下标(注:是一维的下标) 
    unravel_index(index, shape) : 根据shape将一维下标index转成多维下标 
    ptp(a) : 计算数组a最大值和最小值的差 
    median(a) : 计算数组a中元素的中位数(中值)
    NumPy统计函数

    详细方法链接:http://www.cnblogs.com/TensorSense/p/6795995.html

    四:Anaconda的安装及使用

      1:anaconda是什么?

      anaconda是Python的包管理器和环境管理器。

      2:为什么用anaconda?

      anaconda附带了一大批常用数据科学包,附带了conda、Python和150多个科学包及其依赖项。提供包管理功能,使得Windows平台安装第三方包经常失败的场景得以解决。提供环境管理功能,解决多版本Python并存、切换的问题。

      3:安装

      官网下载安装包:官网地址https://www.anaconda.com/download/

      值得注意的是anaconda没有快捷方式(pip3 install IPython,更加方便运行)

    tips:什么是Jupyter Notebook?

      前身是IPython notebook,是一个开源的web application,可以创建和分享包含代码,视图,注释的文档,也可以用于数据统计,分析,建模,机器学习等领域。

             

  • 相关阅读:
    维护win10注册表
    win10操作技巧
    无处不网络
    事件驱动编程思想
    流程控制之if...else
    python----GIL的概念
    并发与同步异步的概念
    实现并发join的方法
    线程的调用
    三元运算符
  • 原文地址:https://www.cnblogs.com/liuxiaolu/p/10894335.html
Copyright © 2011-2022 走看看