Numpy & Pandas
Table of Contents
1 What are Numpy & Pandas?
NumPy:作为多维数组(ndarray)容器,可以对数组执行元素级计算以及直接对数组执行数学运算的函数。其也是用于读写硬盘上基于数组的数据集的工具。数据处理速度比Python自身的嵌套列表要快很多。
Pandas: 是基于NumPy的一种工具,提供了快速便捷地处理结构化数据的大量数据结构和函数。使用最多的pandas对象主要是Series(一组数据及相应的索引标签)和DataFrame (二维表结构)。
2 Numpy
2.1 Numpy – 归纳
2.1.1 Array典型属性
np.array.ndim
np.array.shapre
np.array.size
array = np.array([[1,2,3], [2,3,4]]) print(array) print('number of dim:',array.ndim) print('shapre: ',array.shape) print('size: ',array.size)
2.1.2 Array类型创建
np.array(…,dtype=np.type)
np.zeros(…)
np.empty(…)
np.arange(10,20,2)
np.arange(9).reshapre((3,3))
np.linspace(1,10,20)
np.linspace(1,10,20).reshapre((5,4))
2.1.3 Array基本运算
即基本矩阵运算…+、-、*、**、dot
sum、min、max、axis – 0/1
np.agrmin(); np.argmax() 两个函数分别对应求矩阵最小元素和最大元素的索引
np.mean() == np.average() 求矩阵均值
np.cumsum() 生成的每一项矩阵元素的值都为原矩阵按序累加到该项
np.diff() 生成的为每一行中后一项与前一项之差。故3行4列的矩阵通过函数计算得到的矩阵为3行3列
np.sort() 该方法,仅针对每一行进行从小到大的排序操作。
np.transpose() 矩阵的转置方法 – 1
np.array.T 矩阵的转置方法 – 2
np.clip(Array,Array_min,Array_max) 该方法,将矩阵中元素小于(大于)Array_min(Array_max)的值替换为对应值
2.1.4 Array索引
a = np.array(…)
a[3] 当a为一维矩阵时,则当前索引不用解释;当a为n维,则该索引含义为第4行
a[1, 1:3] numpy同样支持Python中如同list一样的切片操作
2.1.5 Array的迭代输出
for row in A 按行输出
for column in A.T 按列输出
a.flatten() 将矩阵展开的函数,将矩阵展位为1维
for item in a.flat flat为矩阵的一个迭代器
2.1.6 Array的合并
np.vstack(array,array) 该方法,将两个矩阵上下合并。
np.hstack(array,array) 该方法,将两个矩阵左右合并。
np.newaxis() 该方法的应用环境请看:numpy:newaxis() use circumstances – 1.将数组变换为列或行向量 2.
np.concatenate() 该方法能更方便的让你合并多个矩阵
2.1.7 Array的分割
等量分割:np.split(array,n,axis=0/1) n–分割出n个子集。axis – 指示分割方向,当axis=0时,分割方向为横向;当axis=1时,分割方向为竖向
不等量分割:np.array_split(array,n,axis=0/1) n–分割出n个子集,axis – 指示分割方向,当axis=0时,分割方向为横向;当axis=1时,分割方向为竖向
np.vsplit(array,n) == np.split(array,n,axis=0)
np.hsplit(array,n) == np.split(array,n,axis=1)
2.1.8 Array的复制
对于numpy的array对象,直接使用 = 进行对象复制的时候,进行的是
numpy的array复制,array.copy()…
2.2 细枝末节
numpy.random.seed() is not thread-safe random.random.seed() is thread-safe(or at least, I haven't found any evidence to the contrary numpy.random lib 对比 random.random拥有更多的常用于科研的概率分布模型。 然而以上两者皆不能适用于严肃的加密环境中的随机数生成要求