• 《利用Python 进行数据分析 第二版》 -第4章 NumPy基础:数组与向量化计算


    本章重点内容:

    1、NumPy ndarray:多维数组对象

      1)生成ndarry

      2)ndarray的数据类型

      3)NumPy数据算术

      4)基础索引与切片

      5)布尔索引

      6)数组转置和换轴

    2、通用函数:快速的逐元素数组函数

    3、使用数组进行面向数组编程

    4、使用数组进行文件输入和输出

    5、伪随机数生成

    6、示例:随机漫步

    接下来展开详细说明,如下

    1、NumPy ndarray:多维数组对象

    NumPy,是Numerical Python的简称,它是目前Python数值计算中最为重要的基础包,大多数计算包都提供了基于NumPy的科学函数功能,将NumPy的数组对象作为数据交换的通用语

    首先看下NumPy的简单使用,如下:

     导入numpy进行使用,随机生成2行3列数字,然后可以进行一些数学操作,例如相乘、相加,如下:

     一个ndarray是一个通用的多维同类数据容器,每个数组都有一个shape属性,表示纬度的数量,都有一个dtype属性,表示数据类型,如下:

     1)生成ndarry

    最简单的就是使用array函数,可以将不同的列表转换为数组,如下:

     一般来说,针对同等长度的列表,会自动转换为多维数组,

    可以通过arange生成数组,类似Python中的range,如下

     2)ndarray的数据类型

    前面我们说过,每个数组都会有一个数据类型的属性,在创建数组时,可以声明不同的数据类型,如下:

     可以使用astype方法显示的转换数组的数据类型,如下:

     如果字符串表示数字的含义,也可以通过astype转换成数字,如下:

     3)NumPy数据算术

    数组之所以重要事因为他允许进行批量操作而无需任何for循环,在NumPy中,这个特性成为向量化,算术操作都会针对数组逐个元素进行,如下:

     两个数组间也可以进行比较,会产生一个布尔值数组,如下:

     4)基础索引与切片

    一维数组的索引和切片,和Python中的列表相似,如下:

     有一个特别要区别的地方,就是数组的切片是原数组的视图,不是复制数据,所以对切片的修改都会反应到原数组上

    可以针对二维及更多纬度的数组进行切片,如下,二维数组示例:

     可以进行更多纬度更灵活的切片,如下:

     5)布尔索引

    假如我们有两个数组,一个数组是名字,另一个名字数组是数据,每个名字对应另一个数组中对应每行的数据,可以通过布尔索引相关数据,代码示例如下:

    首先,创建一个名字的数组,然后随机产生对应的数据,如下:

     可以直接对数据进行比较操作,如下:

     在索引数组时可以传入布尔数组,如下:

     可以选择除bob之外的数据,如下:

     其中符合【~】表示取反的意思

    6)数组转置和换轴

    转置是一种特殊的数据重组形式,可以通过transpose方法和特殊的T属性实现,如下:

     在计算矩阵内积的时候,会用到转置,计算内积的方法是【.dot】,代码示例如下:

     2、通用函数:快速的逐元素数组函数

    这里的通用函数,是指对一个数组或者多个数组进行的函数运算,例如取根号,最大值比较,具体代码示例如下:

     3、使用数组进行面向数组编程

    将条件逻辑作为数组操作

    numpy.where函数是三元表达式【x if condition else y】的向量化版本

    如果有一个布尔数组和两个数值数组,根据布尔数组来选择另外两个数组,用该办法操作如下:

     可以对一个数组内符合条件的内容进行替换操作,如下:

     数学和统计方法

    对数组内数据就和以及求均值,都可以很方便的实现,如下:

     排序

    数组也可是使用sort方法进行位置排序,如下:

     针对多维数组,可以指定轴向进行排序,如下:

     唯一值

    可以通过nuique方法计算数组内的唯一值,去除重复的内容,例如前面中提到的姓名的数组,具体代码示例如下:

     4、使用数组进行文件输入和输出

    通过save和load方法来进行存取操作,具体代码示例如下:

    存入数据:文件格式会默认为npy

     读取数据:一定要写出后缀

    5、伪随机数生成

    前面的示例中已经看到和用到来random的函数,来随机生产数据,他也可以高效多种概率分布下的完整样本值数组,例如使用normal获得4X4正态分布样本数组,如下:

     6、示例:随机漫步

  • 相关阅读:
    VS2013 调试窗口一闪而过的解决方法
    什么是文件?
    局部变量和全局变量的区别
    一个简单java程序的要素
    运行一个简单的Java程序
    Javascript 构造函数原型继承机制
    函数式编程之一等公民的函数
    弹性布局flex-兼容问题
    TypeScript中的枚举类型
    依赖注入
  • 原文地址:https://www.cnblogs.com/zhangjiyou/p/13379105.html
Copyright © 2020-2023  润新知