数据分析---Numpy库的使用

Numpy库

random模块常用随机数生成函数

seed:确定随机数生成器的种子
permutation:返回一个序列的随机排列或返回一个随机排列的范围
shuffle:对一个序列进行随机排序
binomial:产生二项分布的随机数
normal:产生正态分布的随机数
beta:产生beta分布的随机数
chisquare:产生卡方分布的随机数
gamma:产生gamma分布的随机数
uniform:产生[0,1)中均匀分布的随机数。

通过索引访问数组

arr = np. arange(10)
print(‘索引结果为:’, arr[5] ) #用整数作为下标可以获取数组中的某个元素 索引结果为5
print( ‘索引结果为:’, arr[ 3:5 ] ) #用范围作为下标获取数组的一个切片,包括arr[3]不包括 arr[5] 索引结果为[3,4]
print(‘索引结果为:’, arr[:5] ) #省略开始下标,表示从arr[0]开始 索引结果为[0 1 2 3 4]
print(‘索引结果为:’, arr[-1] ) #下标可以使用负数,-1表示从数组后往前数的第一个元素 索引结果为 9

多维数组的索引

arr = np.array ( [ [1, 2, 3, 4, 5],[4, 5, 6, 7, 8], [7, 8, 9, 10, 11] ] )
print(‘创建的二维数组为:’,arr)
创建的二维数组为: [[ 1 2 3 4 5] [ 4 5 6 7 8] [ 7 8 9 10 11]]
print(‘索引结果为:’, arr [0, 3:5] ) #索引第0行中第3和4列的元素
索引结果为: [4 5]
#索引第2和3行中第3~5列的元素 print(‘索引结果为:’, arr [1:, 2:] )
索引结果为: [[ 6 7 8] [ 9 10 11]]
print(‘索引结果为:’,arr [: , 2] ) #索引第2列的元素
索引结果为: [3 6 9]
#从两个序列的对应位置取出两个整数来组成下标:arr[0,1], arr[1,2], arr[2,3] print( ‘索引结果为:’, arr[ [(0,1,2),(1,2,3)] ]) 索引结果为: [ 2 6 10]
print(‘索引结果为:’,arr [1:, (0,2,3) ] ) #索引第2、3行中第0、2、3列的元素
索引结果为: [[ 4 6 7] [ 7 9 10]]
mask = np.array ([1,0,1], dtype = np.bool) #mask是一个布尔数组,它索引第1、3行中第2列的元素, 行为对应布尔值为1的行数 print(‘索引结果为:’, arr[mask, 2] ) 索引结果为: [3 9]

改变数组的形状

arr = np.arange(12) #创建一维数组 print(‘创建的一维数组为:’,arr)
print(‘新的一维数组为:’, arr.reshape(3,4) ) #设置数组的形状
print(‘数组维度为:’, arr.reshape(3,4).ndim ) #查看数组维度

使用rave函数展平数组

arr = np.arange(12). reshape(3,4) print(‘创建的二维数组为:’,arr)
print(‘数组展平后为:’, arr.ravel( ) )

使用flatten函数展平数组

print(‘数组展平为:’, arr.flatten() ) #横向展平
print(‘数组展平为:’, arr.flatten(‘F’) ) #纵向展平

组合数组

使用hstack函数实现数组横向组合:np.hstack((arr1,arr2))
使用vstack函数实现数组纵向组合:np.vstack( (arr1,arr2) )
使用concatenate函数实现数组横向组合:np.concatenate( (arr1,arr2), axis = 1) )
使用concatenate函数实现数组纵向组合:np.concatenate( (arr1,arr2), axis = 0) )

切割数组

使用hsplit函数实现数组横向分割: np.hsplit (arr1, 2)
使用vsplit函数实现数组纵向分割: np.vsplit(arr, 2)
使用split函数实现数组横向分割: np.split (arr, 2, axis=1)
使用split函数实现数组纵向分割: np.split (arr, 2, axis=0)

创建NumPy矩阵

创建与组合矩阵

使用mat函数创建矩阵: matr1 = np.mat(“1 2 3; 4 5 6; 7 8 9”)
使用matrix函数创建矩阵:matr2= np.matrix([[1,2,3], [4,5,6], [7,8,9]])
使用bmat函数合成矩阵:np.bmat (“arr1 arr2; arr1 arr2”)

认识ufunc函数

全称通用函数(universal function),是一种能够对数组中所有元素进行操作的函数。 以Numpy数组作为输出,因此不需要对数组每个元素都操作,比math库中的函数操作效率更高
比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元 素的比较结果。
逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and”。运算结果返回布尔值。

ufunc函数的广播机制

广播(broadcasting)是指不同形状的数组之间执行算术运算的方式。需要遵循4个原则。
Ø让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。
Ø 输出数组的shape是输入数组shape的各个轴上的最大值。
Ø 如果各个输入数组的对应轴的长度相同或者其长度为1时,这样的数组之间能够用来计算,否则 出错。
Ø 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。

一维数组的广播机制

x=np.array([[1,3,5],[1,1,1],[2,2,2],[3,3,3]])
y=np.array([2,4,3])
print (x+y)

一维数组的广播机制

x=np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])
y=np.array([1,2,3,4]).reshape((4,1))
print (x+y)

你可能感兴趣的:(数据分析)