雷毅

导航

《利用Python进行数据分析》第4章学习笔记

NumPy基础:数组和矢量计算

NumPy的ndarray:一种多维数组对象

该对象是一个快速灵活的大数据集容器。你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样

列表转换为数组

二维列表

数据类型

其他一些自动生成的数组

arange()

ndarray的数据类型

使用astype()方法转换类型,如果将浮点数转换成整数,则小数部分将会被截断,如果某个字符串数组全是数字,也可以用其转换为数值形式

数组和标量之间的运算

数组很重要,因为它使你不用编写循环即可对主句执行批量运算。这通常就叫做矢量化。大小相等的数组之间的任何算术运算都会将运算应用到元素级。

数组*数组就是相应位置每个数的乘积,数组也可以和标量进行加减乘除运算。

不同大小的数组之间的运算叫做广播。

基本的索引和切片

跟python中列表类似,数组切片是原始数组的视图。

arr[0][2]
arr[0,2]
这两个是相同的

布尔型索引

可以使用!=,-,或者&,|进行运算。

花式索引

指的是利用整数数组进行索引。

数组转置和轴对称

arr.T,

np.dot(arr.T,arr)计算内积

高位数组的转置不太明白

还有一个swapaxes方法,需要接受一个对轴编号。不太理解

通用函数:快速的元素级数组函数

 

 

利用数组进行数据处理

矢量化:用数组表达式代替循环的做法。一般来说,矢量化数组运算要比等价的纯Python方式快上一两个数量级(甚至更多)。

np.neshgrid()函数接受两个一维数组,产生两个二维矩阵(对应于两个数组中所有的(x,y)对)

将条件逻辑表述为数组运算

np.where函数是三元表达式 x if condition else y的矢量化版本。

np.where的第二个和的三个参数不必是数组,他们都可以是标量值。通常用于根据另一个数组而产生一个新的数组。

数学和统计方法

排序

跟Python内置列表类型一样,NumPy数组也可以通过sort方法就地排序。

顶级方法np.sort返回的是数组的已排序副本,而就地排序则会修改数组本身。

唯一化以及其他的集合逻辑

NumPy提供了一些针对一维ndarray的基本集合运算。最常用的可能要数np.unique了,它用于找出数组中的唯一值并返回已排序的结果。

用于数组的文件输入输出

NumPy能够读写磁盘上的文本数据或二进制数据。

将数组以二进制格式保存到磁盘:

np.save() 保存,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

np.load() 读取磁盘上的数组。

np.saves() 可以将多个数组保存到一个压缩文件中,将数组以关键字参数的形式传入即可。.npz

存取文本文件:

np.loadtxt()

np.savetxt()

线性代数

随机数生成

范例:随机漫步

 

posted on 2016-09-27 18:47  雷毅  阅读(352)  评论(0编辑  收藏  举报