利用Python进行数据分析| 4 NumPy基础:数组和矢量计算

利用Python进行数据分析| 4 NumPy基础:数组和矢量计算

广播(broadcasting):不同大小的数组之间的运算

基本的索引和切片:当你将⼀个标量值赋值给⼀个切⽚时(如arr[5:8]=12),该值会⾃动传播(也就说后⾯将会讲到的“⼴播”)到整个选区。跟列表最重要的区别在于,数组切⽚是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。

二维数组的表示方法:

 

通过布尔型设置数组

花式索引(Fancy indexing):利用整数数组进行索引

#以特定顺序选取⾏⼦集,只需传⼊⼀个⽤于指定顺序的整数列表或ndarray即可
arr=np.empty((8,4))
for i in range(8):
    arr[i]=i
arr
arr[[4,3,0,6]]
arr[[0,1],[3,2]]
#花式索引跟切⽚不⼀样,它总是将数据复制到新数组中。

数组转置和轴对换

#数组转置
arr=np.arange(15).reshape((3,5))
print(arr)
print(arr.T)

#计算矩阵内积
arr=np.random.randn(6,3)
np.dot(arr.T,arr)

对于⾼维数组,transpose需要得到⼀个由轴编号组成的元组才能对这些轴进⾏转置:

arr = np.arange(16).reshape((2,2,4))
print(arr)

arr.transpose((1,0,2))
arr.swapaxes(0, 2)

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

利用数组进行数据处理

NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)。⽤数组表达式代替循环的做法,通常被称为⽮量化

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

np.where()=if condtion x else y

数学和统计方法

np.mean()

np.sum()

axis= 用于计算该轴向上的统计值,axis=1计算行的平均值,axis=0计算每列的统计值

用于布尔型数组的方法

bools.any()

bools.all()

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

np.unique()找出数组中的唯一值并返回已排序的结果

用于数组的文件输入输出(.npy文件)

np.save()

np.load()

np.savez()将多个数组保存到一个未压缩文件中

 

线性代数

np.dot()

@ 矩阵乘法

numpy.linalg中有⼀组标准的矩阵分解运算以及诸如求逆和⾏列式之类的东西

伪随机数生成

 

 

参考资料: Mckinney W . 利用PYTHON进行数据分析[M]. 机械工业出版社, 2014.