numpy基础
1.numpy简介
numpy是针对多维数组的一个科学计算的包,封装了多个用于数组间计算的函数。数组是相同数据类型的元素按一定顺序排列的组合,需要注意的是必须是相同数据类型的,比如全是整数、全是字符串或者其他。使用前需导入numpy包:import numpy as np
2.numpy 数组生成
- 一般数组。给array函数传入一个列表或元组。传入嵌套列表或元组则为多维数组
# 无论给array传入什么类型参数,都是numpy.ndarray数据类型
arr0 = np.array([1,2,3,4])
arr1 = np.array((1,2,5))
arr2 = np.array([[1,2,3,4],[5,5,6,7],[4,5,7,8]])
arr3 = np.array(((1,2,3,4),(5,5,6,7),(4,5,7,8)))
ic(arr0,type(arr0),arr1,type(arr1),arr2,type(arr2),arr3)
- arrange(start,stop,step)函数生成固定范围的随机数组:
arrange()函数默认左闭右开;3个参数分别为(开始,结束,步长),2个参数时指明start和stop,默认step为1;1个参数时指明stop,默认start=0,step=1。 - 生成0矩阵用zeros()函数,1矩阵用ones(),单位矩阵用 eye():
zeros()和ones()函数传入一个具体值时生成相应长度的一维数组,传入一对值时生成对应行列数的多维数组。eye()函数传入正方形边长。
- random.rand()生成(0,1)之间的随机数组
- random.randn()生成满足正态分布的数组
- np.random.randint(low,high,size)方法用于生成一定范围内的随机整数数组。
默认左闭右开,size为生成数组的长度。2个参数时指定low和high,默认size=1;1个参数时指定high,默认low=0,size=1。size为1个具体值时生成相应长度的一维数组,为1对值时生成多维数组,注意此时size参数不能省略。
- np.random.choice()方法用来从已知数组中随机选取相应大小的数组。replace参数默认True,表示允许重复选择,若为False,已知数组的长度必须大于随机选取的数组,否则会报错。如此例中,若设置replace=False,生成(2,3)的数组会报错
3.numpy 数组的基本属性
- shape:数组的形状
- size:数组大小
- dtype:数据类型
- ndim:数组的维数
4.numpy 数组的数据选取
“,” 为行列分隔符号,获取行数据时,获取所有列可省略"," 默认左闭右开。
获取列数据,":,"表示行和分隔符,不能省略,默认左闭右开。
获取行列数据
5.numpy 数据预处理
- 数组类型转换astype()
- 缺失值处理。查找缺失值用isnan(),填充空值直接给相应位置的元素赋值
- 重复值去重,用unique
6.numpy 数组重塑
- 一维变多维。重塑后数组中值的个数等于原数组中值的个数即可
# 数组重塑,一维变多维
d = np.arange(1,13,1)
ds = d.reshape(3,4)
ic(d,ds)
# 多维变多维
ic(ds.reshape(2,6))
- 数组转置
7.numpy 数组合并
横向合并。与pandas不同,不需要公共列,只是简单的拼接在一起。数组横向合并(行数不变),行数必须相同。
纵向合并与横向合并相对应,纵向拼接在一起(列数不变),列数必须相同。
合并三种方法如下:
- concatenate:以列表形式传入,axis=1横向合并,axis=0纵向合并
- hstack:以元组形式传入,横向合并,无需指明合并方向。对应纵向合并方法为vstack
- column_stack:以元组形式传入,横向合并,无需指明合并方向。对应纵向合并方法为row_stack
# 数组横向合并(行数不变),行数必须相同,concatenate以列表形式传入,hstack和column_stack以元组形式传入
hb1 = np.random.randint(1,6,(2,2))
hb2 = np.random.randint(1,6,(2,3))
ic(hb1,hb2)
ic(np.concatenate([hb1,hb2],axis=1),np.hstack((hb1,hb2)),np.column_stack((hb1,hb2)))
# 数组纵向合并(列数不变),列数必须相同,concatenate以列表形式传入axis=0,vstack和row_stack以元组形式传入
hb3 = np.random.randint(1,6,(1,2))
hb4 = np.random.randint(1,6,(2,2))
ic(np.concatenate([hb3,hb4],axis=0),np.vstack((hb3,hb4)),np.row_stack((hb3,hb4)))
横向合并如下:
纵向合并如下:
8.常用数据分析函数
- 元素级函数。针对数组中的每个元素执行相同的函数操作。例如对所有元素开平方或平方
- 描述统计函数。对整个 NumPy 数组或某条轴的数据进行统计运算。例如对每行或每列求和
- 条件函数。Numpy 数组中的条件函数np.where(condition,x,y)类似于 Excel 中的if(condition,True,False)函数,如果条件(condition)为真则返回x,如果条件为假则返回y,可以嵌套使用
- 集合关系。每个数组都可以当作一个集合,集合的关系其实就是两个数组之间的关系,主要有包含(in1d)、交集(intersect1d)、并集(union1d)、差集(setdiff1d)四种