Numpy和pandas的一些函数笔记
2019-02-11 本文已影响0人
一位学有余力的同学
Numpy
| 函数 | 作用 |
|---|---|
| a=np.array([2,23,4],dtype=np.float) | 把列表转换成矩阵(我们创建的时候是一个列表,有逗号分割,转换成矩阵之后就没有逗号分隔) |
| a.ndim | 矩阵的维度 |
| a.shape | 矩阵的形状(几行几列) |
| a.shape[0] | a的行数 |
| a.shape[1] | a的列数 |
| a.size | 矩阵共有多少个元素 |
| a=np.zeros((3,4)) | 生成3行4列的全零矩阵 |
| a=np.arange[10,20,2] | 生成10到20的数列,间距是2 |
| a=np.arange(12).reshape((3,4)) | 生成从0到11的3行4列矩阵 |
| a=np.linspace(1,10,5) | 生成从1到10的一个线段,共5段,自动计算步长 |
| a[0,0] | 索引a的第一行第一列 |
| a[1,:] | 索引第二行的所有数 |
| np.argmax(a,0) | 索取每列最大值索引,如果想索取每行最大值索引,把0换成1 |
| a.flatten() | 把矩阵a中的元素放到一行 |
| a=np.random.random((2,4)) | 随机生成2行4列的随机矩阵 |
| np.sum(a, axis=None) | 对整个矩阵元素求和,如果数组a是多维,默认是对列求和,我们也可以对它进行指定,当axis=0时是对列进行求和,当axis=1时是对行进行求和 |
| np.sum(a,axis=0) | axis=0对每一列求和,axis=1对每一行求和 |
| np.max(a,axis=0) | 寻找每一列中的最大值 |
| np.clip(a, 5, 9) | 矩阵中小于5的元素为5,大于9的元素为9 |
| np.size(a,0)/ np.size(a,1) | 当为0时求行个数,为1时求列个数 |
| np.matmul(a,b) | 矩阵乘法(交叉相乘相加) |
| np.dot(a,b) | 矩阵乘法(点积,与上相同) |
| np.linspace(start, stop, num) | 生成num个从start到stop的数 |
| np.expand_dims(data, axis=3) | 增加一个第四维,例如原数据形状是(60,28,28),新的形状是(60,28,28,1) |
| A@B | 矩阵乘法 |
| a*b | 对应元素相乘 |
| A**2 | 矩阵里每个元素平方 |
| np.hstack((a,b)) | 把矩阵a拼接到矩阵b的左侧(注意几个括号) |
| np.vstack((a,b)) | 把矩阵b拼接到矩阵a的下方 |
| np.concatenate((a,b,c,d,e),axis = 0) | 把多个矩阵进行上下合并 |
| np.split(a,2,axis=1) | 把矩阵a进行纵向分割,分割成两列 |
| np.array_split(a,3,axis=1) | 把矩阵a进行纵向不等量分割,分割成两列 |
| np.vsplit(a,3) | 横向分割成三部分 |
| np.hsplit(a,4) | 把矩阵a纵向分割成4部分 |
| np.isin(a,b) | 判断a是否在b里,如果是就返回true,否则就返回false |
| np.loadtxt('text.txt') | 读取txt文件 |
| np.savetxt('text.txt', X) | 保存txt文件, 第一个是文件路径,X是要保存的数组 |
| np.reshape(a, newshape) | a要变换的array,newshape期望得到的形状 |
| numpy.ndarray.flatten(a) | 将数组展平,返回原数据的副本 |
| np.ravel(a) | 将数组展平,不返回数据副本 |
| np.squeeze(data,axis = 1) | 对data的形状进行压缩,列入原data的形状为[5,1,24],压缩后的形状就为[5,24] |
| np.random.rand(3,2) | 产生形状为(3,2)符合标准正太分布的随机数 |
| np.random.randint(low, high, size=None) | 产生从low到high形状为size的整数 |
| np.random.random(size=None) | 产生区间为[0,1)的随机浮点型数组 |
| np.random.normal(size=None) | 产生符合正态分布的随机数 |
| np.prod(a, axis=None) | 计算矩阵a元素的乘积,np.prod([[1.,2.],[3.,4.]]),结果为1234=24,np.prod([[1.,2.],[3.,4.]], axis=1)计算每一行的乘积,结果为[12=2,3*4=12] |
| np.argsort(x) | 该函数是求输入数组x的按从小到大排列的索引。例如x=np.array([5,2,3]),则输出的结果为:array([1,2,0]) |
| np.unique() | 去掉数组中重复的数 |
pandas
| 函数 | 作用 |
|---|---|
| pd.Series([list],index=[list]) | 是pandas的一种一维数据结构,创建一个带索引的一维表,不输入索引默认索引从0开始 ,里面也可以直接传入一个字典{'a':1,'b':3,'c':6} |
| pd.DataFrame(np.random.randn(4,4), index=list('ABCD'),columns=list('abcd')) |
pandas的一种二维数据结构。类似于excel表,index和columns默认为从0开始 |
| pd.DataFrame(data, index=range(20), columns=['a','c','f']) | 也可以指定行列名,更多方法 |
| pd.date_range(start=None, end=None, periods=None) | 创建时间序列 |
| df.head() | 默认printdataframe的前5行数据,括号内可输入具体数字,例如df.head(3)就是只打印前3行 |
| pd.rename(columns={'原名':'新名'} inplace=True) | 给列换名字 |
| df.dtypes | 返回数据形式 |
| df.index | 返回数据的索引 |
| df.columns | 返回列的名字 |
| df.valuse | 返回所有元素 |
| df.describe() | 返回数据描述 |
| df.T | 行列颠倒 |
| df.sort_index(axis=1,ascending=False) | 将列索引按倒序进行重新排序(这一列中所有元素都要一起动) |
| df.sort_values(by='E') | 对E列按值进行排序 |
| df.groupby(key) | 按key进行分组,更多使用方法参考 |
| df.'A' / df['A'] | 返回A这1列 |
| df[1:3] | 返回df1到3行的切片 (index1:3) |
| df['A':'B'] | 返回A到B行(indexA:B) |
| df.loc['20130101'] | 返回标签为“20130101”这一行,(只能index,返回columns见下) |
| df.loc[:,['A','C']] | 返回A和C两个colunms(不能用:连接AC) |
| pd.concat([df1, df2], axis=0) | 将df1和df2进行上下合并 |
| pd.drop(['name'], axis=1, inplace=True) | 删除某列并替换原数据 |
| df.dropna(axis=0, how='any') | axis=0表示丢掉行,axis=1表示丢掉列。how={'any','all'},当how为'any'时,只要这一行/列出现空值,就丢掉;当how为‘all’时,只有当这一行/列都为空值才丢掉 |
| df.fillna(value=0) | 空值用0填充 |
| df.isnull() | 判断是否有缺失值 |
| pd.to_csv('data.csv', index=False, header=False) | 保存数据,不保存索引和列名称 |
| pd.read_csv(path, header=None) | 读csv文件, 如果不声明header=None,第一行会作为表头,详细参数设置
|
| df.values | 把dataframe变成array |
| df.matrix | 把dataframe变成array |
| np.array(df) | 把dataframe变成array |
| np.unique(a) | 去掉数组a中重复的数 |