《利用python进行数据分析》学习笔记(四)
2017-06-23 10:32
134 查看
Numpy
学习笔记四主要针对本书的第四章进行总结。ndarry
Numpy最重要的特点就是其N维数组对象,可以利用这种数组对整块数据执行数学运算。data.shape data.dtype
每个数组都有一个shape和一个dtype。
[b]创建ndarry[/b]
# 利用array创建 data = [[1,2,3],[8.1,2,4]] arr = np.array(data) # 数组维度,这个data就是2维 arr.dim # 利用zeros和ones创建 # shape为(m,n)的全零数组 np.zeros((m,n)) # shape为(m,n)的全一数组 np.ones((m,n)) # shape为((x,y,z))的未初始化值 np.empty((x,y,z)) # arange np.arange(15)
[b]ndarry数据类型[/b]
# 利用array创建, 并设置数据类型 arr = np.array([1,2,3],dtype = np.int32) # 利用astype改变数据类型 float_arr = arr.astype(np.float64)
[b]基本索引和切片[/b]
numpy跟python列表的功能相似,但跟列表最重要的区别在于数组切片是原始数组的视图。这意味着数据不会被赋值,视图上的任何修改都会直接反映到原数组上,不用复制来复制去,就能解决性能和内存的问题。
# arr的第6个元素,下标从0开始 arr[5] # arr的第6到第8个元素 arr[5:8] # 得到复制 arr[5:8].copy() # 二维索引 arr[0][2] arr[0,2]
[b]布尔索引[/b]
names = np.array(['Bob','Joe','Bob','Will','Joe']) data = np.random.randn(5,4) # 输出一个布尔量的数组 names == 'Bob' # out:array([True,False,True,False,False],dtype=bool) # 利用这个布尔数组进行索引,得到对应行 data[names == 'Bob'] # 反索引 data[-(names == 'Bob')] data[names != 'Bob']
[b]花式索引[/b]
# 以特定顺序选取行子集 arr[[4,3,0,6]] #选取特定位置子集 arr[[1,5,7,2],[0,3,1,2]] #(最后选出的元素为(1,0)、(5,3)、(7,1)、(2,2)) # 选出一个方形区域 arr[np.ix_([1,5,7,2],[0,3,1,2])]
利用数组进行数据处理
用数组表达式代替循环的做法,通常被称为矢量化。一般来说,矢量化数组运算要比等价的纯python方式快上一两个数量级(甚至更多)。# 1000个间隔相等的点 points = np.arange(-5,5,0.01) xs,ys = np.meshgrid(points,points) z = np.sqrt(xs**2 + ys**2)
[b]将条件逻辑表述为数组运算[/b]
np.where函数是三元表达式(x if condition else y)的矢量化版本。
xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5]) cond = np.array([True, False, True, True, False]) # 利用循环 result = [(x if c else y) for x,y,c in zip(xarr,yarr,cond)] # 利用where result = np.where(cond,xarr,yarr)
利用循环第一对大数组的处理速度不是很快(因为所有工作都是由纯Python完成的),第二无法用于多维数组,所以用where更好。
[b]集合运算[/b]
线性代数
import numpy.linalg
随机数生成
import numpy.random
相关文章推荐
- 《利用python进行数据分析》学习笔记(一)
- 《利用python进行数据分析》学习笔记(一)
- 《利用python进行数据分析》学习笔记第八章
- 《利用python进行数据分析》学习笔记ch09
- 《利用python进行数据分析》学习笔记(五)(下)
- 《利用Python进行数据分析》学习笔记ch02-1(1)
- 《利用python进行数据分析》学习笔记(二)4.3 通用函数 4.4 利用数组进行数据处理
- 《利用python进行数据分析》学习笔记(二)
- 《利用Python进行数据分析》学习笔记ch02-2(2)
- 《利用Python进行数据分析》学习笔记ch02-3(3)
- 《利用python进行数据分析》学习笔记(六)
- 《C++ primer》学习笔记之二十八:类点滴,记录琐碎的类的语法或注意事项
- 《统计学习方法》学习笔记(二):感知机
- 学习笔记(一)
- 《从零开始学Swift》学习笔记(Day43)——构造函数继承
- 《COM原理及应用》学习笔记之第四章
- 《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(一)
- tnl 的 masterServer, client server 架构学习笔记
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(三)之Everything Is an Object
- 《设计模式精解》学习笔记(四)——Facade(外观)模式