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拥有更多的常用于科研的概率分布模型。
然而以上两者皆不能适用于严肃的加密环境中的随机数生成要求

3 学习资源

Author: dctrl

Created: 2018-10-03 Wed 17:16

Validate