利用python进行数据分析—四、Numpy基础:数组与向量化计算

文章目录

      • 引言
      • 4.1 ndarray:多维数组对象
        • 4.1.1生成ndarray
        • 4.1.2 ndarray的数据类型
        • 4.1.3 Numpy数组算术
        • 4.1.4基础索引与切片
        • 4.1.5布尔索引
        • 4.1.6神奇索引
        • 4.1.7数组转置与换轴
      • 4.2通用函数:快速的逐元素数组函数
      • 4.3使用数组进行面向数组编程
        • 4.3.1将条件逻辑作为数组操作
        • 4.3.2基础数组统计方法
        • 4.3.3布尔值数组的方法
        • 4.3.4排序
        • 4.3.5唯一值与其他集合逻辑
      • 4.4使用数组进行文件输入和输出
        • 4.5线性代数
        • 4.6伪随机数的生成
      • 4.8示例:随机漫步

引言

  Numpy的设计对于含有大量数组的数据非常有效。

  • Numpy在内部将数据存储到连续的内存块上,这与python其他内建数据结构不同。Numpy的算法库是用C写的,所以在操作数据内存时,不需要任何类型检查或者其他管理操作。Numpy数组使用的内存量小于其他python内建序列。
  • Numpy针对全量数组进行复杂计算而不需要写python循环。

4.1 ndarray:多维数组对象

4.1.1生成ndarray

数组生成函数如下:
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第1张图片
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第2张图片

4.1.2 ndarray的数据类型

  ndarray的数据类型有如下:
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第3张图片
可以用astype方法来转换数组类型
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第4张图片

4.1.3 Numpy数组算术

  数组允许进行批量操作而无须for循环。任何两个等尺寸数组之间的算术操作都应用了逐元素操作的形式。不同尺寸数组之间的操作将用到广播特性。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第5张图片

4.1.4基础索引与切片

  一维数组比较简单,看起来与列表类似,不过也有区别。数组的切片是原数组的视图,这就意味着数据并不是被复制了,任何对视图的修改都会反馈到原数组上。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第6张图片
  多维数组,省略后续索引值,返回的对象将是降低一个维度的数组。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第7张图片
  切片索引:单独一个:表示该轴上的所有数组。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第8张图片

4.1.5布尔索引

  在索引数组时可以传入布尔数组,布尔数组的长度必须和数组轴索引的长度一致。
常用符号有‘==’,‘!=’,‘~’(在条件表达式前取反)。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第9张图片
  需要使用布尔算术运算符&和|来组合多个布尔值条件
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第10张图片
  基于常识设置布尔数组的值
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第11张图片

4.1.6神奇索引

  使用整数数组进行数据索引。当只有一个索引数组时,该数组是一个包含指明所需顺序的列表或者数组。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第12张图片
  当传递进入的是多个数组时,会根据每个索引数组对应的元素选出一个一维数组。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第13张图片

神奇索引与切片不同,它总是将数组复制到一个新的数组中。

4.1.7数组转置与换轴

  数组的转置:transpose方法与T属性
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第14张图片
  对于高维度数组,transpose方法,可以接收包含轴编号的元祖,用于置换轴。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第15张图片

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

  一元通用函数
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第16张图片
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第17张图片
  二元通用函数
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第18张图片
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第19张图片

4.3使用数组进行面向数组编程

  向量化的数组操作比纯python的等价实现在速度上快一到两个数量级(甚至更多),这对所有种类的数值计算产生了很大影响。

4.3.1将条件逻辑作为数组操作

  np.where函数是三元表达式x if cond else y 的向量化版本。向量化后速度更快,也适用于数组是多维的情况
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第20张图片
  np.where函数的第二个与第三个参数可以是标量
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第21张图片
  np.where函数的第二个与第三个参数也可以是将标量与数组联合
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第22张图片

4.3.2基础数组统计方法

  这些方法可接受一个可选参数axis,axis=0表示跨行计算,axis=1表示跨列计算
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第23张图片

4.3.3布尔值数组的方法

  对于布尔值数组,有两个非常有用的方法any和all。这两个方法也适用于布尔值数组,非0元素按照True处理。

any检查数组中是否至少有一个True
all检查数组中是否每个值都是True

利用python进行数据分析—四、Numpy基础:数组与向量化计算_第24张图片

4.3.4排序

  数组可以用sort方法进行排序,可选参数axis,沿着axis轴对每一个一维数据进行排序。np.sort()方法返回的是已经排序好的数组的拷贝,而不是对原数组按位置排序。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第25张图片

4.3.5唯一值与其他集合逻辑

  np.unique返回的是数组中唯一值排序后形成的数组。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第26张图片
  np.in1d:检查一个数组中的值是否在另一个数组中,并返回一个布尔值数组
在这里插入图片描述
数组集合操作:
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第27张图片

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

  numpy可以在硬盘中将数据以文本或二进制文件的形式进行存入硬盘或由硬盘载入。
np.save和np.load
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第28张图片
可以使用np.savez将数组作为参数传递给该函数,用未压缩文件来保存多个数组

在这里插入图片描述
np.savez_compressed将数组存入已经压缩的文件
np.savetxt、np.loadtxt表示存取文本文件
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第29张图片

4.5线性代数

  numpy中*是逐元素相乘,而不是矩阵的点积。矩阵的点积是np.dot(x,y)或者特殊符号@

利用python进行数据分析—四、Numpy基础:数组与向量化计算_第30张图片
np.linalg标准函数集(矩阵分解)
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第31张图片
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第32张图片

4.6伪随机数的生成

  np.random模块可以高效的生成多种概率分布下的完整样本值数组,弥补了python内建random模块的不足。
利用python进行数据分析—四、Numpy基础:数组与向量化计算_第33张图片
在这里插入图片描述

4.8示例:随机漫步

利用python进行数据分析—四、Numpy基础:数组与向量化计算_第34张图片

你可能感兴趣的:(#,利用python进行数据分析,numpy)