数据分析--numpy的基本使用
一、numpy概述
NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
NumPy的主要功能:
- ndarray,一个多维数组结构,高效且节省空间
- 无需循环对整组数据进行快速运算的数学函数
- *读写磁盘数据的工具以及用于操作内存映射文件的工具
- *线性代数、随机数生成和傅里叶变换功能
- *用于集成C、C++等代码的工具
python中操作方式:
- 安装方法:pip install numpy
- 引用方式:import numpy as np
也可以通过安装anaconda软件操作,里面包含(numpy,pandas以及Matplotlib多个库),本片文章是在anaconda3中运行!!!
- anaconda下载地址请戳:https://www.anaconda.com/download/
- anaconda安装及创建项目教程:https://jingyan.baidu.com/article/3f16e0031e87522591c10320.html
二、NumPy:ndarray-多维数组对象
创建ndarray:np.array()
ndarray是多维数组,与列表的区别是:
- 数组对象内的元素类型必须相同
- 数组大小不可修改
常用属性:
- T 数组的转置(对高维数组而言)
- dtype 数组元素的数据类型
- size 数组元素的个数
- ndim 数组的维数
- shape 数组的维度大小(以元组形式)
代码示例:
三、NumPy:ndarray-数据类型
ndarray数据类型:dtype: ●布尔型:bool_ ●整型:int_ int8 int16 int32 int64 ●无符号整型:uint8 uint16 uint32 uint64 ●浮点型:float_ float16 float32 float64 ●复数型:complex_ complex64 complex128
四、NumPy:ndarray-创建
创建ndarray: ●array() 将列表转换为数组,可选择显式指定dtype ●arange() range的numpy版,支持浮点数 ●linspace() 类似arange(),第三个参数为数组长度 ●zeros() 根据指定形状和dtype创建全0数组 ●ones() 根据指定形状和dtype创建全1数组 ●empty() 根据指定形状和dtype创建空数组(随机值)
五、NumPy:索引和切片
-代码示例:
●a= np.array([0,1,2,3,4,5,6,7,8,9])
●a2 = np.array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])
-数组和标量之间的运算
●a+1 a*3 1//a a**0.5
-同样大小数组之间的运算
●a+b a/b a**b
-数组的索引
●一维数组:a[5] --> #5
●多维数组:
●列表式写法:a2[2][3] --> #13
●新式写法:a2[2,3](推荐) --> #13
-数组的切片
●一维数组:a[5:8] --> # array([5,6,7])
a[:3] = 1 --> # array([1,1,1,3,4,5,6,7,8,9])
●二维数组:a2[1:2, :4] --> # array([[5, 6, 7, 8]])
a2[:,:1] --> # array([[0],[5],[10]])
a2[:,1] --> # array([1,6,11])
-与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。
●【解决方法: copy()】
六、NumPy:布尔型索引
问题:给一个数组,选出数组中所有大于5的数。 答案:a[a>5] 原理: a>5会对a中的每一个元素进行判断,返回一个布尔数组 布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组 问题2:给一个数组,选出数组中所有大于5的偶数。 答案: a[(a>5) & (a%2==0)] 原理:此处不能用and,and为关键字;&为运算符,表示与的意思 问题3:给一个数组,选出数组中所有大于5的数或偶数。 答案: a[(a>5) | (a%2==0)] 原理:此处 | 表示或的意思 备注:~表示非的意思
七、NumPy:花式索引*
问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。 ●答案:a[[1,3,4,6,7]] 问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。 ●答案:a[:,[1,3]] 问题3: 已知 a2 = np.array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]),想要获取新的数组array([[1,3],[11,13]])该怎么切? ●答案: a2[[0,2],:][:,[1,3]] ●备注:切勿两边同时花式索引,a2[[0,2],[1,3]],得出 array([ 1, 13])
八、NumPy:通用函数
通用函数:能同时对数组中所有元素进行运算的函数
九、NumPy:数学和统计方法
常用函数: ●sum 求和 ●mean 求平均数 ●std 求标准差 ●var 求方差 ●min 求最小值 ●max 求最大值 ●argmin 求最小值索引 ●argmax 求最大值索引
十、NumPy:随机数生成
常用函数 ●rand 给定形状产生随机数组(0到1之间的数) ●randint 给定形状产生随机整数 ●choice 给定形状产生随机选择 ●shuffle 与random.shuffle相同 ●uniform 给定形状产生随机数组