之前在用python做一些数据处理的时候(列表相加、相乘),有接触到numpy,但并未进行过系统的学习。这里算是《利用Python进行数据分析》的读书笔记。
numpy和python原始的数据类型(list等)相比较,使得数据的计算变得更为简单和高效。这体现在:
1.数组的相加、对应元素相乘等基本运算;
2.多维数组的转置、行列变换、求逆、矩阵相乘等矩阵运算;
3.数据到文件的存储和读取;
4.高效随机数生成,多种概率分布的随机数生成。
numpy之array数组
与python相比,处理方式上快捷了很多,可以和list相互转换。
a. 数组相加、相乘等基本操作;
arr = np.array(range(16))
print arr+arr,arr-arr,arr*arr,arr/arr
b.数组类型转换
arr.astype("float64")
c.数组索引和切片
一维数组的索引和切片与list类似,不一样的地方在于:
list切片后得到的数据,是copy出来的,对数据进行修改不会影响原来的list:
array数组切片后,得到的数据,修改后对原来的数据同样进行了修改。
array切换后的修改,会改到原始数据这是由于在服务大数据时,如果进行切片操作,会占用过多的存储。所以设计上,array的切片其实只是原始数据的一种获取方式,而非拷贝。
array的索引则和list一样, 不会改动到原始数据。
索引修改不会改动到原始数据如果只希望对获得的数据修改,可使用arr[2:5].copy()来获取。
多维数组索引:
多维数组的两种索引方式
多维数组可用[a,b...]类似于坐标的方式来对数据进行切片和索引。
多维数组的切片花式索引:
类似于矩阵的换行换列等操作,以向量中的元素作为index去获得原始数据对应的部分,再重新构造。
简单的花式索引-行变换 简单的花式索引2-列变换d.数组转置
arr = np.arange(15).reshape(3,5)
arr.T#T表示转置
e.通用函数
numpy中包含多种对矩阵、数组进行计算的函数
np.sqrt(arr)#获取arr数组中所有数据的均方根
np.exp(arr)#exp
np.pow(A,B)#计算A[i]的B[i]次幂,也可用A.pow(B)表示
暂时先记录到这里,后面再补充
网友评论