ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Pandas学习笔记 01 python和NumPy基础

2022-03-05 16:36:10  阅读:195  来源: 互联网

标签:01 函数 索引 python 矩阵 维度 数组 np NumPy


pandas预备知识:python和numpy基础

目录

1 python基础

1.1 列表推导式与条件赋值

列表推导式:[* for i in],支持多层嵌套

条件赋值:value = a if condition else b

1.2 匿名函数与map方法

匿名函数: lambda

map方法:需要list()转换为列表

1.3 zip对象与enumerate方法

zip函数将多个可迭代对象打包成一个元组构成的可迭代对象,通过tuplelist可以获得相应结果。

enumerate在迭代时绑定迭代元素的遍历序号。

*zip可进行解压。

2 numpy基础

2.1 np数组的构造

  1. 一般方法:np.array([])

  2. 等差序列

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0),一般设置起点、终点(包含)和样本个数。

np.arange([start,] stop[, step,], dtype=None, *, like=None),一般设置起点、终点(不包含)和步长。

  1. 特殊矩阵

zeros:全零矩阵

eye:单位矩阵,可设置偏移主对角线量

full:指定值填充矩阵

  1. 随机矩阵 np.random

rand:0-1均匀分布的随机数组

randn: 标准正态分布的随机数组

randint: 随机整数组

choice:随机列表抽样

permutation:打散原列表

2.2 np数组的变形与合并

转置:.T

上下合并:r_

左右合并:c_

维度变换:reshapeorder='C/F'表示逐行/列读取,维度空缺使用-1

2.3 np数组的切片与索引

支持使用slice类型的start:end:step切片,也可直接传入列表指定某个维度的索引进行切片。

可以利用np.ix_在对应维度上使用布尔索引,此时不能使用slice切片。

一维数组可直接进行布尔索引,无需np.ix_

2.4 常用函数

  1. where条件函数

​ 指定满足条件与不满足条件位置对应的填充值

  1. nonzero,argmax,argmin

nonzero返回非零数的索引,argmax, argmin分别返回最大和最小数的索引

  1. any, all

    any:序列至少存在一个True或非零元素时返回True,否则返回False

    all:序列元素全为True或非零元素时返回True,否则返回False

  2. cumprod,cumsum,diff

    cumprod,cumsum分别表示累乘和累加函数,返回同长度数组。

    diff表示与前一元素做差,返回长度比原数组少1。

  3. 统计函数

​ 常用统计函数:max, min, mean, median, std, var, sum, quantile

​ 通过array.max()调用,其中quantile为全局方法,通过np.quantile调用。

​ 略过缺失值可使用相应的nan*方法,如nanmax

​ 协方差和相关系数:np.cov(s1, s2)np.corrcoef(s1, s2)

2.5 广播机制

NumPy官方文档

  1. 标量与数组

    概念上将标量拉伸到数组大小,再逐个运算

    实际上直接使用原标量运算,内存和计算效率更高

  2. 数组与数组

​ 操作两个数组时,NumPy按位比较维度形状。

​ 两个维度兼容的情况:维度相同或其中一个维度为1

2.6 向量与矩阵的计算

向量内积:dot

向量范数和矩阵范数:np.linalg.norm

矩阵乘法:@

参考:

joyful pandas教程 https://github.com/datawhalechina/joyful-pandas

NumPy官方文档 https://numpy.org/doc/stable/user/basics.broadcasting.html

标签:01,函数,索引,python,矩阵,维度,数组,np,NumPy
来源: https://www.cnblogs.com/ikventure/p/15968443.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有